1
ノンブロッキングTCPソケットの場合、write()
またはread()
はどんな場合でも直ちに返されます(read()
がバッファを満たすことができるかどうか、write()
がバッファ全体を送信できるかどうか)。なぜ非ブロッキングTCPソケットは:: write()コールで多くの時間を費やすのでしょうか?
ノンブロッキングモードでは、write()
に時間がかかることがあります。
ノンブロッキングTCPソケットの場合、write()
またはread()
はどんな場合でも直ちに返されます(read()
がバッファを満たすことができるかどうか、write()
がバッファ全体を送信できるかどうか)。なぜ非ブロッキングTCPソケットは:: write()コールで多くの時間を費やすのでしょうか?
ノンブロッキングモードでは、write()
に時間がかかることがあります。
理由は単純でした。スレッドスターベーションです。仮想マシンは自分のコードから時間を奪っていました。例えば、usleep(30000)は800ミリ秒後に戻るかもしれません。
*なぜ*これが起こるのか* *これが*起こり得るのかを尋ねているかどうかは不明です。あなたはこれを経験していますか、それとも単なる理論的な質問ですか? 'Noticeable'はミリ秒単位で定義されていません。実行時間のパーセンテージで定義されます。 – EJP
あなたはそれが成功するまで何度も何度も電話し続けると... – immibis