【发布时间】:2017-11-13 20:42:53
【问题描述】:
阅读 asio 的文档后,我很清楚完成处理程序是由调用 io_service 的 io.run() 方法的线程之一调用的。但是,我不清楚的是读/写异步方法发生在哪个线程。是我调用方法的线程还是调用io.run() 方法的线程之一?或者,在最后一种情况下,库是否在幕后创建另一个线程并执行操作?
【问题讨论】:
-
这是因为你想知道它是否阻塞了一些操作,还是因为你想知道线程局部变量处于什么状态,或者其他什么目的?
-
这是因为我正在开发一个关键应用程序,我不能浪费时间在我的应用程序正在运行的线程上编写代码。我知道我可以发布一个 lambda 来执行我的 io_service,以便在调用 run() 方法的线程之一上进行写入操作。但是,如果库本身创建一个线程另一个线程来执行写操作,则没有必要发布到 io_service。
-
Platform-Specific Implementation Notes 文档记录了所有内部线程的创建和用途。没有一个内部线程将服务于写操作。
标签: c++ multithreading boost boost-asio