我有一个对象X
,它在自己的线程中工作,有时会以(std::condition_variable) some_cv.notify_all()
发出信号
我还有另一个对象Y
,它从Windows命名管道执行重叠读取。然后我需要Y
等待来自some_cv
,或完成重叠操作的通知。
我该怎么做?我想出的一个解决方案如下:
1)协调hEvent
重叠操作
2)产生一个等待hEvent
的线程并调用some_cv.notify_all()
。然后Y
应该找出它被唤醒的原因。
但是,此解决方案需要一个全新的线程,其唯一目的是等待hEvent
和“转发信号”到some_cv
。相反,使用ReadFileEx
执行读取,为其提供完成例程,并直接从此例程调用some_cv.notify_all
会更好。
问题是,只有当Y
达到“可警告状态”时,此完成例程才有可能运行。我不知道等待std::condition_variable
是否可以在Windows中发出警报。
等待Windows std::condition_variable
警报?如果没有,你会建议采用其他什么方法?