![]() |
1
3
正如您所说,要类似于windows风格的事件,您需要一个条件变量和一个布尔标志。当然,如果满足您的需要,您可以将多个布尔标志合并为一个。
但是,您提到的问题(条件变量永远不会得到
通过让第二个线程等待互斥锁被将处理该条件的线程解锁,您可以确保每个条件都得到处理。(注意:在Java中,NoTIFY()方法必须在锁内调用,这取决于实现细节,如果在C++中完成,可能会导致更坏的性能,但确保程序员至少曾经想过如何同步条件与接收方的开机)。 boost.thread不提供windows风格的事件(和posix信号量,顺便说一句)的原因是这些原语很容易出错。如果您不打算将应用程序移植到另一个平台,那么使应用程序适应这种不同的样式可能不值得。 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |