2012-01-04 71 views
2

如果我想要线程A接收它的数据包并处理它们,并且某个线程B可以在某个时刻更改套接字的IP地址。线程数之间的事件C++

所以需要在这里做的事情是: 线程A必须开始监听新的IP和线程B必须以某种方式告诉给线程A

有什么建议?请对我来说非常重要。

+1

它对我感兴趣,但你使用的是什么库? .NET,Qt,STL,Boost等等? – 2012-01-04 15:39:31

+0

究竟你需要使用哪些功能进行同步? – Dialecticus 2012-01-04 15:46:14

+2

在我看来,就像一个简单的“重新建立套接字”-flag会做的,由线程B设置并由线程A检查/清除。 – 2012-01-04 15:51:00

回答

0

你可能需要一个工作流程,例如:

// 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 
0

其实,我会让我的评论答案:

创建/启动另一个线程A实例,通过它新的IP /端口。在旧线程A中设置一些标志,告诉退出本身并在清醒时清理它。

如果你想要一点点东西,或者你经常改变套接字操作,关闭旧线程A上的监听套接字 - 它的accept()调用将失败,并出现一些异常或错误,旧的线程A然后可以清理自己并死亡。