我有一个std::iostream
对象(例如fstream
),我希望将它用于boost::asio
的异步操作。那可能吗?我知道asio不支持文件操作,但有时异步处理文件IO很有用。我可以使用特定于平台的本机文件描述符,然后将它们与asio一起使用,但我认为使用标准C ++流在C ++中会更优雅,也更便于使用。
答案 0 :(得分:2)
虽然Boost.Asio不支持文件操作,但它确实为应用程序提供了以异步方式执行文件操作的工具集。实现此目的的常用方法是使用Boost.Asio创建线程池。应用程序会将文件操作发布到线程池中,立即返回。然后,线程池将同步执行操作,并在完成时调用或发布完成处理程序。
有几点需要考虑:
io_service
。最后,libuv是一个提供同步和异步文件操作的C库。它可以作为有价值的底层实现或参考材料。