3

私は現在、高性能の Raw ソケット アプリケーションに取り組んでいます。

ReceiveFromAsync を使用してパケットを受信して​​います。これはばかげた質問のように聞こえるかもしれませんが、これは暗黙的にスレッド化されているのでしょうか? 現在のパケットを処理している間に追加のパケットをブロックしないようにするために、受信したパケットを取得して処理をスレッド化する必要があるかどうかはわかりません。ドキュメントは実際にはそれについて言及していません。3.5 ソケットのサンプル コードではスレッド化されていないため、暗黙的に処理されると最初に推測しました。

ありがとう

4

1 に答える 1

3

すべてのAsync IO関数は、プロセスによって送信された要求のキューである IO 完了ポートを作成/利用します。プロセスがこのリクエストを行うたびに、Asynch IO callこのキューに送信されます。次に、スレッドの特別なプールがこれらの IO 要求を処理しますkernel threads。したがって、このシステムの配管 ( ) をマルチスレッドの一部と見なす場合these kernel threads、コードはマルチスレッドです。

呼び出しによって提供される抽象化を出発点と考える場合Async IO、おそらくコードはマルチスレッド化されていません。

いずれの場合も、アプリケーションの専用スレッドではない場合でも複数のスレッドが実行されているか、アプリケーションの開始前に作成され、アプリケーションが存在した後も引き続き実行されます。

于 2011-03-04T05:05:37.153 に答える