イベント駆動型プログラミングはどのように実装されていますか?
-
27-09-2019 - |
質問
Twistedとnode.jsフレームワークがどのように機能するかを検討していましたが、オペレーティングシステムがコールバックを使用してI/O操作をどのようにサポートしているかを正確に理解しようとしています。
I/O操作を待っているスレッドをブロックする必要がないため、スレッドが必要であるため、良いことを理解しています。しかし、I/Oが終了したら、コールバックを呼び出す必要があります。
これはオペレーティングシステムによってどのように実装されていますか?
解決
1つのアプローチは、OSに、読み取り通知を待っているファイル記述子に相当する船内など、関連するデータ構造へのコールバックを待っている人に関する情報を添付することです。そのファイル記述子に何かが起こると、OSはウェイターをスキャンして、通知が必要かどうかを確認します。彼らがすべきなら、それはそうします。これの1つの実装について読むことができます FreeBSDを紹介するレモンの論文 kqueue
機構. 。特にセクション6、「実装」、サブセクション3および4、「イベントソースのアクティビティ」および「配信」を参照してください。
他のヒント
これは、「I/Oイベント通知設備/インターフェイス」を使用してOSで解決されます。 epoll, 、世論調査、 kqueue または選択します。
を見てみましょう deft, 、そして特にその」 IO/イベントループ 上記の「通知システム」がどのように使用されるかを具体的な例として。 (java.nio.channels.selector これに抽象化を提供するJava nioの方法です。)
免責事項:巧妙なコミッターです
所属していません StackOverflow