問題タブ [green-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
294 参照

green-threads - Benefits of green threads vs a simple loop

Is there any benefit to using green threads / lightweight threads over a simple loop or sequential code, assuming only non blocking operations are used in both?

As far as I can think of
- green threads help avoid a bit of callback hell on async operations
- allow scheduling of M green threads on N kernel threads

But
- add a bit of complexity and performance requiring a scheduler
- easier cross thread communication when the language supports it and the execution was split to different cpu's (otherwise sequential code is simpler)

0 投票する
2 に答える
3965 参照

.net - .NET のグリーン スレッド

グリーン スレッドは Erlang で導入され、おそらくそれに基づくすべての言語が、go (ゴルーチン) でも認識しています。それから、彼らは錆から取り除かれました。

私の質問:

  • .NET でグリーン スレッドを実装するにはどうすればよいでしょうか。現在の .NET ランタイムがそれらを実装するのを妨げるいくつかの警告はありますか?
  • パフォーマンスの面でも意味がありますか?非常に軽量な Task があり、(近い) 将来、ValueType Task (いくつかのシナリオにより適しています) もあるでしょう...
0 投票する
2 に答える
7520 参照

python - 非同期ガンコーン ワーカーのイベントレット ライブラリの使用方法

私の django プロジェクトの 1 つは、ansible (gunicorn & nginx)を使用してデプロイされています。以下はgunicorn の設定です:

ワーカー プロセスは同期的に実行されています。このサーバーでは毎分多くのリクエストがあるため、それらを同時に実行したいと考えています。調査の結果、同時実行にgreenthreadseventletを使用するような python ライブラリを使用できることがわかりました。このためには、worker_class を次のように eventlet に変更する必要があります。

しかし今、私は無知です。このプロジェクトの非同期グリーン スレッドを実装する方法がわかりません。これはばかげた質問かもしれませんが、本当に助けが必要です。

前もって感謝します。

0 投票する
1 に答える
318 参照

multithreading - グリーン スレッドでの I/O ブロッキング

私はグリーン スレッドについて読んでいて、これらのスレッドが OS ではなく VM または実行時に作成されることを理解できましたが、次のステートメントを理解できません。

グリーン スレッドがブロッキング システム コールを実行すると、そのスレッドがブロックされるだけでなく、プロセス内のすべてのスレッドがブロックされます。

誰がそれがどのように可能か説明してもらえますか?

0 投票する
0 に答える
173 参照

multithreading - グリーンスレッド vs ネイティブスレッド vs デーモンスレッド vs ユーザースレッド

これらすべてのタイプの違いの違いは何ですか? 最初の 2 つと最後の 2 つの違いを見つけることはできますが、すべてではありません。これらのタイプに関する詳細な情報を例とともに教えてください。そして、これらのスレッドとは別のタイプのスレッドがありますか?

0 投票する
1 に答える
80 参照

linux-kernel - グリーン スレッドの欠点: ホスト カーネル スレッド ブロック

私は現在オペレーティング システムを勉強していて、Implementing Multi-Threaded Processes.

具体的には、教科書では というシステムでユーザーレベルのスレッドを実装できると説明していますPer-Processor Kernel Threads。このシステムの詳細な説明は次のとおりです。

アプリケーションが起動すると、ユーザー レベルのスレッド ライブラリによって、ホスト マシン上のプロセッサごとに 1 つのカーネル スレッドが作成されます。システムに他のアクティビティがない限り、カーネルはこれらの各スレッドにプロセッサを割り当てます。各カーネル スレッドは、ユーザー レベルのスケジューラを並行して実行します。ユーザー レベルの準備完了リストから次のスレッドを取り出して実行します。スレッド スケジューリングの決定はユーザー レベルで行われるため、柔軟でアプリケーション固有のものにすることができます。

ただし、次に、このシステムにはいくつかの欠点があり、これはグリーン スレッドと同様です。言及されているいくつかの欠点は以下のとおりです

  • ユーザーレベルのスレッドがカーネルを呼び出すたびに、そのホスト カーネル スレッドがブロックされます。これにより、その間、スレッド ライブラリがそのプロセッサで別のユーザー レベルのスレッドを実行することを防ぎます。

  • カーネルがカーネル スレッドをタイム スライスするときはいつでも、それが実行していたユーザー レベルのスレッドも中断されます。このライブラリは、カーネル スレッドが再開するまでそのスレッドを再開できません。

どちらも完全には理解できません。これが私の質問です。

  1. ユーザーレベルのスレッドがカーネルを呼び出す場合、ホスト カーネル スレッドがこのシステムでブロックされるのはなぜですか?
  2. とはkernel time-slices a kernel threadどういう意味ですか?
  3. カーネルがカーネル スレッドをタイム スライスする場合、ユーザー レベルのスレッドの実行が中断されるのはなぜですか?

ありがとう。