boost::asio库的async_*函数是否由操作系统并行执行?

Are those async_* functions of boost::asio lib executed parallelly by OS

本文关键字:是否 操作系统 并行执行 函数 asio 库的 async boost      更新时间:2023-10-16

最近我正在使用boost::asio库,并且对那些async_*函数有一个问题。

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

谢谢!

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

是的,他们是!
异步操作有两种类型:cpu绑定任务和io绑定任务。

cpu绑定任务是指只涉及cpu执行的任务,如计算、向RAM读取和写入数据等。

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

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

所以,异步IO(例如,通过boost As synchronous IO)即使没有多线程,仍然可以并行工作。