是否由OS并行执行boost :: asio lib的async_*函数

Che*_*han 5 c++ boost boost-asio c++11

最近我使用的是boost :: asio库,并对这些async_*函数有疑问.

假设我boost::asio::async_write()连续调用多个,async_write()即使io_service是单线程运行的,这些函数是否可能由底层操作系统并行执行

谢谢!

Dav*_*aim 5

是否有可能这些async_write()函数由底层操作系统并行执行

对,他们是!
有两种类型的异步操作,CPU绑定任务和IO绑定任务.

CPU绑定任务是仅涉及CPU执行的任务,如计算,读取和写入RAM等数据.

IO绑定任务是涉及读取和写入设备的任务,如硬盘(文件IO),网卡(网络IO)等.

为了异步执行CPU绑定任务,您需要多个线程,但IO是不同的.异步IO不利用线程并行,它只是将请求排队到相关设备(硬盘,网卡等)并继续执行另一个代码,而不等待IO完成.

所以,即使没有多个线程,异步IO(例如,由boost as ynchronous IO给出)仍将并行工作.

  • 在一个对象上不止一次调用[`async_`函数]时要小心谨慎(http://stackoverflow.com/questions/24998899/what-socket-send-recv-operations-can-run-concurrently-using-boost -asio). (3认同)