2012-04-22 22 views
1

簡単な質問です。私は複数のワーカースレッド(Pthreads)を持つネットワークCアプリケーション(TCPサーバー)を持っています。各ワーカースレッドはselectシステムコールを使用し、各スレッドは選択セットにリスニングsocket descriptorを追加しています。そのため、各ワーカースレッドは着信接続をリッスンし、一度に1つのスレッドのみが特定の接続の受け入れに成功し、その接続のsocket descriptorがそれぞれのスレッドのselectセットに追加されます。複数のスレッド間でソケット記述子を共有する

私の質問は、各スレッドには独自のselectが設定されていることです。ソケットディスクリプタが別のワーカースレッドセレクトセットにあるクライアントにデータを送信または受信することは可能でしょうか?言い換えれば、任意のワーカースレッドの選択セットのソケット記述子を使用して、必要なスレッドからI/Oを実行できますか? ありがとう

答えて

3

異なるスレッド間でソケットとファイルディスクリプタを共有できます。これがほとんどのサーバーの機能です。

+0

二重チェックのため申し訳ありません:/スレッドが接続を受け付け、返されたファイル記述子が他のスレッド選択セットに追加された場合、それらはすべてその記述子からの書き込み/読み取りが可能になります。 – Abdullah

+0

AFAIK、はい、どのスレッドでFDが作成/受け入れられたかに違いはありません。 – MByD

+0

ありがとう。大変感謝しています:) – Abdullah

関連する問題