2012-03-18 4 views
1

メインプロセスでaccept関数からソケットを取得し、2つ以上のスレッドがそこからデータを送信できます。次に、2つ以上のスレッドが並列にデータを送信したい場合、ソケットのアクセスは相互排他的でなければなりません。私の問題は、OSがシステムの最下部の接続されたソケットにロックを追加するかどうかです。2つ以上のスレッドがソケットにアクセスしたいときにソケットにロックを追加する必要がありますか?

+0

私は答えは分かりませんが、関心のあるOSと使用するライブラリ(おそらくどんな言語でも)を追加してください。 – abesto

+0

すみません。 OSはFreeBSDで、ライブラリはPOSIXソケットライブラリ(C言語)です。ありがとう。 –

答えて

0

accept()と書いてあるので、私はストリームソケットについて話しています。

同じソケット上の複数のスレッドまたはプロセスから同時に送信できますが、複数の送信者からのデータが一緒にインターリーブされないという保証はありません。だからあなたはおそらくそれをしたくないのです。

ソケットをブロックしない時間に少量のデータを送信している場合は、同時に送信されるデータブロックが同時にsend()/write()コールに送信されることが予想されます。多分。あなたはそれに数えることはできません。

関連する問題