0

ノンブロッキング ソケットのリストがあります。

それぞれ (この場合、いくつかの呼び出しrecvは失敗します) またはpollリストを呼び出しrecvて、後で準備ができているソケットを呼び出すことができます。

これらのアプローチの間にパフォーマンスの違いはありますか?

ありがとう!

4

1 に答える 1

1

ソケットのデータ レートが非常に高い場合 (例: recv()25% 未満の時間で失敗する場合) を除き、ほとんどの場合、poll()orを使用することをお勧めします。select()

最新のオペレーティング システムはpoll()、セット内の fd の 1 つが準備できるまで操作をインテリジェントにブロックします (カーネルは fd のセットでスレッドをブロックし、その fd がアクセスされた場合にのみスレッドを起動します... 最終的に、これは必要以上に発生します。 、多少のビジー待機が発生しますが、何もないよりはましです)、recv()ループでは常にビジー待機が発生します。

于 2011-10-29T00:36:27.463 に答える