select()
とpoll()
またはepoll()
を比較した記事をいくつか見てきましたが、複数のソケットを使用したselect()
の実際の使用方法を議論している多くのガイドがあります。ソケットselect()とnon-block recv
しかし、私が見つけることができないのは、ノンブロッキングrecv()
との比較であり、select()
なしの呼び出しです。 1ソケットの読み込みと1ソケットの書き込みだけがある場合は、select()
呼び出しを使用する正当な理由はありますか? recv()
メソッドは、利用可能なデータがないときにブロックしてエラー(WSAEWOULDBLOCK
)を返さないように設定することができます。他のソケットがない場合はselect()
と呼ぶのはなぜですか?ノンブロッキングrecv()
の呼び出しは非常に遅いですか?
おそらく実装の詳細すべてです。それを試しましたか? –
連続して読み込むデータがないときにはどうしますか?永遠にループ?またはselectまたはpollまたはepollを使用しますか?ブロッキングまたはノンブロッキングに関係なく、何らかの形でデータを待つ必要があります。 – goji
はい、@トロイは言ったように、あなたはアクティブ待ちを実装するでしょう - 何も読んでいないときは、プロセッサの慈悲を意味しません。 – zoska