我有一个由condition_variable
触发的工作线程来做一些工作。基本上它工作得非常好,而且应该如此。
但是有一个问题:启动工作线程的线程可能会获得足够长的时间片来提供数据队列,并在工作线程尚未就绪时通知condition_variable
,即当它尚未到达condition_variable.wait()
线时。
在我第一次调用wait()
之前,是否有任何方法可以等待工作线程,以确保在我通知工作人员时 将被处理?
答案 0 :(得分:2)
没有理由这样做。当工作线程准备就绪时,它将完成工作。它不需要由条件变量触发,因为它不会等待。
等待已经发生的事情是编码错误。如果你甚至想到这样做,你从根本上不了解条件变量。
在线程等待条件变量之前,必须确保它需要等待的东西。那个必须受到与条件变量关联的互斥锁的保护。当线程从条件变量wait返回时,它通常必须重新测试以确定它是否需要再次等待。