根据Boost Documentation,有多个线程调用io_service::run()
会设置一个线程池,IO服务可以使用它来执行异步任务。它明确指出已加入池的所有线程都被认为是等效的。
这是否意味着不可能有一个单独的线程用于从套接字读取而另一个用于写入?如果有可能,我该如何实现呢?
答案 0 :(得分:5)
任何调用io_service::run()
的线程都可用于调用异步处理程序。但是您无法具体指定哪个线程执行哪种类型的操作。例如,如果在2个后台线程中调用io_service :: run(),并且在主线程中调用socket::async_send
和socket::async_receive
,则处理程序将在当前的任何后台线程中执行可用。所以是的,所有线程基本上都被认为是等效的,并且可以用于任何异步操作。