Boost.Asio:如何编写自定义AsyncReadStream?

时间:2014-09-25 15:48:22

标签: c++ windows boost boost-asio

我编写了一个程序,其中(除其他外)创建子进程并通过监听他们的stdout接收来自他们的通知。这个进程间通信机制很好,但我正在努力解决僵局。

我以为我可以使用Boost.Asio(我已经在我的程序的其他部分用于网络目的)和它的Proactor Pattern实现来使我的程序(主要是)单线程。通过这样做,我不再需要打扰线程同步了。

要做到这一点,我的猜测是我必须编写一个自定义AsyncReadStream类型(在一个线程中调用Windows的ReadFile()),我可以使用asio :: async_read _ *()功能。我的问题是我不知道如何实现AsyncReadStream概念的async_read_some()成员函数。我应该对函数接收的MutableBufferSequence引用做什么?

这是正确的方法吗?如果是这样,我应该如何实现async_read_some()?或者这可能不是正确的方法,除了编写整个自定义服务之外我别无选择?

1 个答案:

答案 0 :(得分:0)

通过管道进行进程间通信在Boost.Process中实现。虽然该库尚未成为Boost的一部分。