私は現在C++でチャットサーバーを書いています。ユーザーが接続すると、ソケットが開き、受け取るスレッドとデータを送信するスレッドという2つのスレッドが作成されます。ソケット - 送受信
私の質問:
他のスレッドが現在ソケットを使用しているかどうかを確認する必要がありますか?またはsend/recv関数はソケットが準備完了するまで待機しますか?
私は現在C++でチャットサーバーを書いています。ユーザーが接続すると、ソケットが開き、受け取るスレッドとデータを送信するスレッドという2つのスレッドが作成されます。ソケット - 送受信
私の質問:
他のスレッドが現在ソケットを使用しているかどうかを確認する必要がありますか?またはsend/recv関数はソケットが準備完了するまで待機しますか?
TCPソケットから同時に送受信することは、まったく問題ありません。 (可能なOSのバグを除く)
ソケット送受信は独立しています。あなた自身でインターリーブすることについて心配する必要はありません。
概念的なレベルには依存しませんが、トランスポート層には共通の状態があります。 – EFraim
確かに、それはソケットAPIによって完全に除外されています。 Heckは、これまでに送信または受信したACKが送信と受信の両方であることを前提にしています。 –