2

さて、基本的に私は3つのスレッドを持っています。

それらのそれぞれは、内部で特定のソケットでsend()を使用する関数を使用します(Sと呼びましょう)。これが小さなデザインです:

http://i.imgur.com/5N744.png

スレッドが同時にソケットにアクセスするのではなく、キュー内でsend()が次々に呼び出されるように、Sソケットを同期するにはどうすればよいですか?

4

1 に答える 1

4

まず、送信するデータの実際のキューと、そこからアイテムをポップしてソケットに書き込む専用のIOスレッドを用意してみませんか?

次に、通常のブロッキングソケットセマンティクスを使用している場合は、3つのスレッドすべてから同時に同じソケットに書き込むことができます。カーネルはシステムコールレベルで必要なロックを提供します。

于 2013-01-15T16:03:48.320 に答える