我有一个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 中等待是否可以提醒。
那么std::condition_variable
在 Windows 中等待警报是否存在?如果没有,你会建议什么其他方法?