Windows重叠了I / O和c ++ condition_variable

时间:2017-06-22 23:03:13

标签: c++ condition-variable overlapped-io

我有一个对象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警报?如果没有,你会建议采用其他什么方法?

0 个答案:

没有答案