【问题标题】:Are those async_* functions of boost::asio lib executed parallelly by OSboost::asio lib 的那些 async_* 函数是否由操作系统并行执行
【发布时间】:2016-10-15 08:05:51
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: c++ c++11 boost boost-asio


    【解决方案1】:

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

    是的,他们是!
    异步操作有两种类型,CPU 密集型任务和 IO 密集型任务。

    CPU 密集型任务是指仅涉及 CPU 执行的任务,例如计算、读取数据并将数据写入 RAM 等。

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

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

    所以是的,即使没有多个线程,异步 IO(例如,由 boost As同步 IO 给出)仍然可以并行工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 2011-10-15
    • 2012-06-09
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2012-03-21
    相关资源
    最近更新 更多