【发布时间】:2015-09-08 22:35:36
【问题描述】:
我正在寻找以下算法在 Windows 上的多线程实现的建议和代码示例:
- 线程1:取
input1,做工作,通知Thread2,继续工作。 - 线程2:取
input2,做工作,等待线程2的通知,做一些处理,通知Thread3,继续工作。 - Thread3:取
input3,做工作,等待thread3的通知,做一些处理,通知Thread4,继续工作。 等等。
由于我是 C++ 新手,我不确定选择哪种机制在线程之间发送/接收通知。
我考虑了几种方法:mutex、semaphore、critical section,但这些似乎主要用于锁定,而不是用于等待通知。
【问题讨论】:
-
向我们展示你到目前为止所做的尝试。
-
如果你在windows上,考虑使用Windows Events
-
使用 Windows 事件会非常慢!只需使用一个简单的布尔值,并使用互斥锁进行保护,就可以了。
-
@ravenspoint 并没有那么慢,不过对于他想要的东西来说可能有点矫枉过正。
-
互斥锁在这里也太过分了。请改用原子布尔值。原子也有它的成本,但更轻量级。
标签: c++ multithreading