C++0x 真的会没有信号量吗? Stack Overflow 上已经有一些关于信号量使用的问题。我一直使用它们(posix 信号量)让一个线程等待另一个线程中的某个事件:
void thread0(...)
{
doSomething0();
event1.wait();
...
}
void thread1(...)
{
doSomething1();
event1.post();
...
}
如果我会用互斥锁来做到这一点:
void thread0(...)
{
doSomething0();
event1.lock(); event1.unlock();
...
}
void thread1(...)
{
event1.lock();
doSomethingth1();
event1.unlock();
...
}
问题:很难看,并且不能保证thread1首先锁定互斥锁(鉴于同一个线程应该锁定和解锁互斥锁,您也不能在thread0和thread1启动之前锁定event1)。
因此,既然 boost 也没有信号量,那么实现上述目标的最简单方法是什么?
原文由 tauran 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以轻松地从互斥锁和条件变量构建一个: