12

poll() man pageを見ているpoll()と、timeout パラメータに正と負の値が渡されたときの動作がわかります。タイムアウトが の場合に何が起こるかはわかりません0何か案は?

epoll_wait() man ページを見ると、タイムアウト値が の0場合、使用可能なイベントがなくてもすぐに戻ることがわかります。それが同じように振る舞うと仮定しても安全ですか?poll()

4

3 に答える 3

9

すぐに戻ります:

timeout が 0 より大きい場合は、ファイル記述子の準備が整うまで待機する最大間隔 (ミリ秒単位) を指定します。タイムアウトがゼロの場合、poll()ブロックせずに戻ります。timeout の値が の場合、 は無期限-1pollブロックします。

、現在Mac OS X 10.5;

ポーリングが完了するまで待機する最大間隔 (ミリ秒)。この値が 0 の場合、poll()すぐに戻ります。この値がINFTIM (-1)の場合poll()、条件が見つかるまで無期限にブロックされます。

、現在OpenBSD 3.8

于 2009-02-09T21:14:30.353 に答える
3

私が見ているように、タイムアウトを待つということは、タイムアウトを「持つ」ことを意味します。このように、poll()が実際にファイル記述子をチェックし、0ミリ秒のタイムアウトの準備ができていない場合(待機なし)に待機することを期待します。ただし、fdが使用可能かどうかを通知するだけの場合があります。

Linuxのソースコードもチェックしました。私の知る限り、これが機能する方法です。最初に「将来の」待機ポイントを計算し、次にファイル記述子をチェックし、使用可能なものがない場合は、指定された時間タイムアウトを待機します。

よろしく、

于 2009-02-09T21:37:59.657 に答える
0

Ubuntu のマニュアル ページから:

timeout 引数は、poll() がブロックする時間の上限をミリ秒単位で指定します。timeout に負の値を指定すると、タイムアウトは無限になります。

0 の特別なケースはないので、poll() は 0 ミリ秒間ブロックすると仮定します。

于 2009-02-09T21:12:07.443 に答える