1
メインプロセスでaccept関数からソケットを取得し、2つ以上のスレッドがそこからデータを送信できます。次に、2つ以上のスレッドが並列にデータを送信したい場合、ソケットのアクセスは相互排他的でなければなりません。私の問題は、OSがシステムの最下部の接続されたソケットにロックを追加するかどうかです。2つ以上のスレッドがソケットにアクセスしたいときにソケットにロックを追加する必要がありますか?
メインプロセスでaccept関数からソケットを取得し、2つ以上のスレッドがそこからデータを送信できます。次に、2つ以上のスレッドが並列にデータを送信したい場合、ソケットのアクセスは相互排他的でなければなりません。私の問題は、OSがシステムの最下部の接続されたソケットにロックを追加するかどうかです。2つ以上のスレッドがソケットにアクセスしたいときにソケットにロックを追加する必要がありますか?
accept()
と書いてあるので、私はストリームソケットについて話しています。
同じソケット上の複数のスレッドまたはプロセスから同時に送信できますが、複数の送信者からのデータが一緒にインターリーブされないという保証はありません。だからあなたはおそらくそれをしたくないのです。
ソケットをブロックしない時間に少量のデータを送信している場合は、同時に送信されるデータブロックが同時にsend()
/write()
コールに送信されることが予想されます。多分。あなたはそれに数えることはできません。
私は答えは分かりませんが、関心のあるOSと使用するライブラリ(おそらくどんな言語でも)を追加してください。 – abesto
すみません。 OSはFreeBSDで、ライブラリはPOSIXソケットライブラリ(C言語)です。ありがとう。 –