簡體   English   中英

如何在 C++ 中異步讀取 ifstream?

[英]How do you read from a ifstream asynchronously in C++?

ifstream 正在從 UNIX pipe 讀取,目前通信是通過向讀取應用程序發送信號來完成的,但我想擺脫信號並使用正確的異步 ZF98ED07A4D5F50F47DE1410D905FZF。

在 C 中,我會使用 select() function 超時,所以當有要讀取的內容時我可以立即做出反應,否則等待 IO。

在 C++ 中無法訪問文件的 fd,因此無法使用 select()。 這樣做最合理的方法是什么? 我必須使用某種 Boost 庫,還是可以使用標准 C++ 庫來完成?

std::ifstream不支持異步操作,它是為同步 IO 設計的。 您可以使用額外的線程和 IO 隊列圍繞它構建異步 IO,但總的來說,出於效率原因,這不是一個好主意。

對於異步 IO 您可能需要查看Boost.ASIO ,尤其是它的stream_descriptor ,它可用於采用任意 stream 文件描述符,如管道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM