Go のノンブロッキング TCP 読み取り: 理由と回避策
Go では、TCP ソケットからの読み取りは本質的にノンブロッキングです。 Read 関数が呼び出されたときにすぐに使用できるわけではありません。この動作は、C の読み取り操作のブロッキングとは対照的です。
Go では TCP 読み取りが非ブロッキングであるのはなぜですか?
TCP 通信には、連続的なバイト ストリームが含まれます。受信者は本質的に、メッセージの境界やデータの完全なセットをいつ受信したかを判断できません。
Go で TCP 読み取りブロックを作成することは可能ですか?
いいえ、Go の TCP 読み取り操作を強制的にブロックすることは直接可能ではありません。
回避策Go での読み取りのブロック
ブロックのような動作を実現するには、次のテクニックを使用できます:
その他の考慮事項
サンプル コードは、ノンブロッキング TCP 読み取りのアドレス指定に加えて、提供:
以上がGo で TCP 読み取りが非ブロッキングになるのはなぜですか? ブロッキング動作を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。