2017-09-23 4 views
0

Gevent/Greenletが次のグリーンレットを実行する方法を理解しようとしています。スレッドはOSスケジューラを使用します。 Go Runtimeは2つの階層キューを使用します。Geventは次のグリーンレットをどのように選ぶのですか?

デフォルトでは、Geventはlibeventを使用しています。 しかし、多くの人が準備ができていると、libeventは次のグリーンレットをどのように実行するのですか?

ランダムですか?

私はすでにドキュメントを読んでいて、ソースコードを確認していました。まだ知りません。

更新:Geventがlibeventを使用することを認識するようにテキストが変更されました。問題はまだlibeventに適用されます。

+0

まず、グリーンレット自体は何も選択していないことに注意してください。グリーンレットはあるコルーチンが他のコルーチンに降伏するメカニズムを提供するだけです。 geventはgreenlet + libevent、libeventはイベントループを提供します。 – jwg

+1

それと同等ですがより正確な質問は、次のようになります。多くの人が準備ができている場合、Gevent内で使用する場合、libeventは次に実行されるgreenletをどのように選択しますか? – alanjds

+0

@alands、はい、私はそう信じています。 – jwg

答えて

0

これは基本的なディスパッチモデルです。イベントベースを使用するイベントループは、さまざまなイベントを監視し、それらに順応してから、私が誇示したものから、セマフォと一緒にして、それをlibeventにディスパッチします。

+0

ようこそStackOverflowへ!これはいくつかの有益な情報、特にlibeventの存在を追加しますが、私はそれが完全に質問に答えるとは思わない。 – jwg

関連する問題