2012-01-04 8 views
2

スレッドAがパケットを受信して​​処理し、スレッドBがソケットのIPアドレスをある時点で変更できるようにする場合。スレッド数の間のイベントC++

ので、ここで行われる必要なものは次のとおりです。 スレッドAは、新たなIPとスレッドB上のリスニングに開始しなければならないが何とか

に任意の提案をA.スレッドすることを伝える必要がありますか?それは私にとって非常に重要です。/

が作成し、別のスレッドにインスタンスを起動します。

// thread A 
// receive packets on initial address 
WaitForSingleObject(event, INFINITE); // wait for address change 
// receive packets on the new address 

// thread B 
// do some work 
// change IP address 
SetEvent(event); // signal A to start receiving on the new address 
+1

私には興味がありますが、どのライブラリを使用していますか? .NET、Qt、STL、Boost ...など? –

+0

同期する必要がある関数を正確に使用していますか? – Dialecticus

+2

スレッドBで設定し、スレッドAでチェック/クリアした単純な "再確立ソケット"フラグが好きです。 –

答えて

0

はおそらく、ワークフローのようなほしいですそれを新しいIP /ポートに渡します。古いスレッドAにいくつかのフラグを設定し、終了するように指示し、起きたときにクリーンアップするように指示します。

ちょっとしたことをしたい、またはこの 'ソケットの変更'操作を頻繁に行う場合は、古いスレッドAのリスニングソケットを閉じます。accept()呼び出しは何らかの例外またはエラーで失敗し、古いスレッドAはそれ自身をクリーンアップして死ぬことができます。

0

実際には、私は私のコメントの答えを作ってあげる:

関連する問題