ノンブロッキング ソケットのリストがあります。
それぞれ (この場合、いくつかの呼び出しrecv
は失敗します) またはpoll
リストを呼び出しrecv
て、後で準備ができているソケットを呼び出すことができます。
これらのアプローチの間にパフォーマンスの違いはありますか?
ありがとう!
ノンブロッキング ソケットのリストがあります。
それぞれ (この場合、いくつかの呼び出しrecv
は失敗します) またはpoll
リストを呼び出しrecv
て、後で準備ができているソケットを呼び出すことができます。
これらのアプローチの間にパフォーマンスの違いはありますか?
ありがとう!
ソケットのデータ レートが非常に高い場合 (例: recv()
25% 未満の時間で失敗する場合) を除き、ほとんどの場合、poll()
orを使用することをお勧めします。select()
最新のオペレーティング システムはpoll()
、セット内の fd の 1 つが準備できるまで操作をインテリジェントにブロックします (カーネルは fd のセットでスレッドをブロックし、その fd がアクセスされた場合にのみスレッドを起動します... 最終的に、これは必要以上に発生します。 、多少のビジー待機が発生しますが、何もないよりはましです)、recv()
ループでは常にビジー待機が発生します。