掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ioctlsocket()の使用方法について (ID:64645)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> やはり、ブロッキング、非ブロッキングを > 頻繁に切り替えるのは、よくないのでしょうか? これ自体は特に悪いというわけではありませんが、あまり見かけませんね。 あえて挙げるなら、あまり見かけないだけに未知のバグを踏む可能性が高いかも、というあたりですかね。 タイムアウトありの受信処理に非ブロッキング方式を使うデメリットならあります。 まず、受信するまで、ウェイトをかけずに延々とループした場合、無駄にCPUを食ってしまいます。 ならば受信が成功するまで、適切な時間だけスリープしながらループ、といった方法を取ればよい、 ということになりますが、この「適切な時間」というのはなかなか決めにくいものです。 短か過ぎるとCPUを食いますし、長過ぎればレスポンスが悪くなりますし。 その点、select()なら、受信するまではCPU使用率が上がりませんし、パケットが到着次第 それが分かりますから、非ブロッキングでループする方式より優れていると思います。 # ここまで書いていて疑問。みかけ上のCPU使用率は上がりますが、実は非ブロッキングで # ループ+Sleep(0)で十分かも?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.