2017-01-04 5 views
0

通常、readの準備ができているソケットを待つためにselect()を使います。しかし、writefdsもselectに渡された場合、fdsが読み込み可能か書き込み可能かがすぐに返されます。問題は、ほとんどの場合ソケットが書き込み可能であることです。これはビジーループを引き起こしませんか?書き込み可能なfdsのためにselect()を実行するとビジーループが発生しますか?

答えて

2

何か書いたことがあるときだけ書込み可能にする必要があります。読んでも同じです - あなたはデータを受け取る準備ができているときだけ読めるのを待ちます。書き込みが成功するたびに、write()が読み込まれ、読み取りに成功した後にはread()になるはずです。

これらの基準を満たしていると、ストリームが無限大でないかソケットバッファが無制限でないため、ビジー待機ループを導入できません。

関連する問題