线程数之间的事件c ++

时间:2012-01-04 15:36:44

标签: c++ multithreading software-design

如果我希望线程A接收其数据包并处理它们,并且某些线程B可以在某些时候更改套接字的IP地址。

所以这里需要做的是: 线程A必须在侦听新IP时开始,线程B必须以某种方式告诉它线程A。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

事实上,我会将我的评论作为答案:

创建/启动另一个线程一个实例,将新的IP /端口传递给它。在旧线程A中设置一些标志,告诉退出自己并清理它是否以及什么时候醒来。

如果你想稍微做点什么,或者你经常做'改变套接字'操作,关闭旧线程A上的监听套接字 - 它的accept()调用将失败,但有一些异常或错误和旧线程然后A可以清理自己并死掉。