2009-12-03 51 views
3

根据Boost Documentation,多线程调用io_service::run()设置了IO服务可用于执行异步任务的线程池。它明确规定所有加入池的线程都被认为是等价的。是否可以使用单独的线程来读写Boost.Asio?

这是否意味着它不可能拥有一个单独的线程来读取套接字和单独的线程来写入?如果可能的话,我将如何实现这一点?

回答

5

任何调用io_service::run()的线程都可以用来调用异步处理程序。但是你不能专门指定哪个线程执行哪种类型的操作。例如,如果在2个后台线程中调用io_service :: run(),并且您要在主线程中调用socket::async_sendsocket::async_receive,则您的处理程序将在当前可用的任何后台线程中执行。所以是的,所有的线程基本上被认为是等价的,并且可以用于任何异步操作。

相关问题