2016-11-18 38 views
0

如何将信号从一个工作线程发送到另一个工作线程?第一个线程将在第一个线程执行完他的作业之后等待第二个线程的信号。我该如何实现这个功能?在MFC中的两个子线程之间发送信号

+2

'PostThreadMessage()'是一种方法。 –

+2

'WaitForSingleObject','SetEvent' –

+0

@JoeWillcoxson:[为什么PostThreadMessage发布的消息消失?](https://blogs.msdn.microsoft.com/oldnewthing/20090930-00/?p=16553)此外,机会你会想要在相反的方向同步,所以你正在寻找相当于'SendThreadMessage'([它不存在](https://blogs.msdn.microsoft.com/oldnewthing/20081223- 00/p = 19743))。 – IInspectable

回答

0

通过“发送信号”我想你并不是指发送(Windows)消息。对于非常简单的事情来说,这太复杂了。您的(第二个)工作线程应该创建一个消息循环并检查(自定义)消息?太过分了。虽然工作线程当然可以创建消息循环,但这很少见。

更好地使用同步,正确的对象类型是“事件”(一个简单的对象,可以处于有信号状态或无信号状态)。第二个线程应该等待,第一个线程必须将其设置为已发信号状态以通知第二个线程完成其工作(这相当于“发送信号”)。

+0

*“虽然工作线程当然可以创建消息循环,但这种情况非常罕见。”* - 不,不是。这**非常普遍。每个承载COM对象的工作线程(仅与STA兼容)将运行一个消息循环。事实上,已经初始化到STA中的任何(工作者)线程将不得不具有消息循环。通过消息传递进行同步非常常见。 – IInspectable