1

我有一个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 中等待警报是否存在?如果没有,你会建议什么其他方法?

4

0 回答 0