如何在C ++中异步读取ifstream?

问题描述 投票:0回答:1

ifstream正在从UNIX管道读取,当前通信是通过向读取应用程序发送信号来完成的,但是我想摆脱这些信号并使用适当的异步io。

在C语言中,我将使用带有超时功能的select()函数,因此当有需要读取的内容时,我可以立即做出反应,否则将等待IO。

在C ++中,我无法访问文件的fd,因此无法使用select()。这样做的最合理方法是什么?我必须使用某种Boost库,还是可以使用标准C ++库来完成?

c++ asynchronous stream pipe
1个回答
1
投票

std::ifstream不支持异步操作,它是为同步IO设计的。您可以使用其他线程和IO队列在其周围构建异步IO,但是出于效率考虑,通常这不是一个好主意。

对于异步IO,您可能希望查看Boost.ASIO,尤其是它的stream_descriptor,可用于采用管道之类的任意流文件描述符。

© www.soinside.com 2019 - 2024. All rights reserved.