最近我在使用 boost::asio 库,并且对那些 async_* 函数有疑问。
假设我连续调用多个 boost::asio::async_write()
,这些 async_write()
函数是否可能由底层操作系统并行执行,即使io_service 是单线程运行的
谢谢!
最佳答案
is it possible that these async_write() functions executed parallelly by the underlying operating system
是的,他们是!
有两种类型的异步操作,CPU 绑定(bind)任务和 IO 绑定(bind)任务。
CPU 密集型任务是只涉及 CPU 执行的任务,例如计算、读写数据到 RAM 等。
IO-Bound 任务是涉及读写设备的任务,如硬盘(文件 IO)、网卡(网络 IO)等。
为了异步执行受 CPU 限制的任务,您需要多个线程,但 IO 不同。异步IO不利用线程并行,它只是将请求排队到相关设备(硬盘、网卡等),然后继续执行另一个代码,而不等待IO完成。
是的,即使没有多线程,异步 IO(例如,由 boost Asynchronous IO 给出)仍将并行工作。
关于c++ - boost::asio lib 的那些 async_* 函数是否由操作系统并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056664/