我编写了一个程序,其中(除其他外)创建子进程并通过监听他们的stdout接收来自他们的通知。这个进程间通信机制很好,但我正在努力解决僵局。
我以为我可以使用Boost.Asio(我已经在我的程序的其他部分用于网络目的)和它的Proactor Pattern实现来使我的程序(主要是)单线程。通过这样做,我不再需要打扰线程同步了。
要做到这一点,我的猜测是我必须编写一个自定义AsyncReadStream类型(在一个线程中调用Windows的ReadFile()),我可以使用asio :: async_read _ *()功能。我的问题是我不知道如何实现AsyncReadStream概念的async_read_some()成员函数。我应该对函数接收的MutableBufferSequence引用做什么?
这是正确的方法吗?如果是这样,我应该如何实现async_read_some()?或者这可能不是正确的方法,除了编写整个自定义服务之外我别无选择?