Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将boost::asio中的异步文件io扩展到Mac OS X_C++_Macos_Boost_Boost Asio - Fatal编程技术网

C++ 将boost::asio中的异步文件io扩展到Mac OS X

C++ 将boost::asio中的异步文件io扩展到Mac OS X,c++,macos,boost,boost-asio,C++,Macos,Boost,Boost Asio,asio包包含用于在Windows中使用io完成端口执行异步文件io的类。据我所知,asio包中包含的其他平台不支持异步文件io 我想知道需要做些什么来扩展asio,使其支持异步文件io,至少支持Mac OS X,但在某种程度上也支持Linux。我最感兴趣的是在asio方面需要做些什么,但由于我对Mac OS X编程没有那么丰富的经验,我不介意在哪里找到更多关于如何在Mac OS X中执行异步文件io的信息——PBReadForkAsync是我应该关注的吗 更新: 我终于开始尝试使用aio_re

asio包包含用于在Windows中使用io完成端口执行异步文件io的类。据我所知,asio包中包含的其他平台不支持异步文件io

我想知道需要做些什么来扩展asio,使其支持异步文件io,至少支持Mac OS X,但在某种程度上也支持Linux。我最感兴趣的是在asio方面需要做些什么,但由于我对Mac OS X编程没有那么丰富的经验,我不介意在哪里找到更多关于如何在Mac OS X中执行异步文件io的信息——PBReadForkAsync是我应该关注的吗

更新:
我终于开始尝试使用aio_read/aio_write在Mac OS X上构建异步文件io(在boost::asio之外),但是我无法获得所需的回调数据(请参阅)。

根据本页,boost::asio在OS X上工作,但有一个小限制:

asio在Mac OS X下工作是,但是,异步文件io不可用。根据文档:Boost.Asio包括添加的类,以允许在POSIX文件描述符上执行同步和异步读写操作,例如管道、标准输入和输出以及各种设备(但不是常规文件)。()。更新了问题,使其更清楚地表明asio包中只有文件io部分“丢失”了Windows以外的其他平台。对不起,我也错过了。我认为更好的方法是将OSX视为POSIX系统,这样就可以得到通用的Unixen和Linux。请参阅
aio\u读取(2)
系统调用和
man aio
。然后可能会将该类提交给Boost,因为它确实应该存在。不幸的是,aio_read等人只支持使用Mac OS X上的信号报告完成。此外,Mac OS X不提供将任何用户数据发送到信号处理程序的方法,因此不可能确切知道哪个操作已完成。因此,我更容易在单独的线程中执行同步io操作(正如我的另一个问题:)。