5

ユーザーごとにスレッドを作成するのとは別の方法で機能することを理解しています。それはどのように正確に機能しますか?

(「ノンブロッキング」はそれと関係がありますか?)

4

1 に答える 1

6

ツイストのドキュメントから:

リアクターは、Twisted 内のイベント ループのコアです。Twisted を使用してアプリケーションを駆動するループです。イベント ループは、プログラム内のイベントまたはメッセージを待機してディスパッチするプログラミング構造です。通常、イベントが到着するまでブロックする内部または外部の「イベント プロバイダー」を呼び出してから、関連するイベント ハンドラーを呼び出します (「イベントをディスパッチします」)。リアクターは、ネットワーク通信、スレッド化、イベント ディスパッチなど、多くのサービスへの基本的なインターフェイスを提供します。

http://en.wikipedia.org/wiki/Event_loopも参照してください

非ブロッキングは、1 つのスレッドで複数のソケット (または、より一般的には、任意の種類のイベント ソースの 2 つ以上) でイベントを処理する場合、ブロッキング操作を使用してそれらのイベントを処理できないことに関連しています。 . 最初のソケットでブロッキング読み取りを行うと、最初のソケットにバイトが到着するまで、2 番目のソケットから読み取ることができません。どのソケットが最初に読み取るバイトを持っているかを実際に知ることができないため、これはうまく機能しません。代わりにselect(上記のウィキペディアのページで詳しく説明されています) のようなものを使用して、どのソケットにバイトがあるかを伝え、ブロックせずにそのソケットからそれらを読み取ります。

これはすべて、任意の数のイベント ソースから次々にイベントを処理できることを意味し、それらすべてを同時に処理しているように見えます。

于 2010-06-18T12:31:00.223 に答える