C++ Asio:如何编写自定义AsyncReadStream?

C++ Asio:如何编写自定义AsyncReadStream?,c++,windows,boost,boost-asio,C++,Windows,Boost,Boost Asio,我编写了一个程序,它(除其他外)通过侦听子进程的标准输出来创建子进程并接收来自它们的通知。这个进程间通信机制很好,但我正在与死锁作斗争 我想我可以使用Boost.Asio(我已经在我的程序的其他部分中用于联网目的)及其Proactor模式实现使我的程序(主要)成为单线程的。这样,我就不必再为线程同步而烦恼了 要做到这一点,我想我必须编写一个自定义类型(在线程中调用Windows的ReadFile()),该类型可以与asio::async_read*()函数一起使用。我的问题是,我不知道如何实现A

我编写了一个程序,它(除其他外)通过侦听子进程的标准输出来创建子进程并接收来自它们的通知。这个进程间通信机制很好,但我正在与死锁作斗争

我想我可以使用Boost.Asio(我已经在我的程序的其他部分中用于联网目的)及其Proactor模式实现使我的程序(主要)成为单线程的。这样,我就不必再为线程同步而烦恼了

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


这是正确的方法吗?如果是这样,我应该如何实现async_read_some()?或者这不是正确的方法,我别无选择,只能编写一个完整的定制服务?

通过管道的进程间通信是在中实现的。虽然库还不是Boost的一部分。

为什么不能使用
asio::windows::random\u access\u handle
等?看一看。@IgorR。用于检索进程标准输出的匿名管道无法随机访问,因此windows::random\u access\u句柄不适合我的需要。我也不能使用windows::stream_句柄,因为它不支持匿名管道(请参阅)。我在Linux和Mac上使用了一个,这个概念在windows上不起作用吗?@SamMiller:因为它位于posix名称空间中,很不幸,我想它不起作用。