使用Boost.Asio可以使用单独的线程进行读写吗?

Krs*_*sna 3 c++ multithreading boost boost-asio

根据Boost 文档,拥有多个线程调用会io_service::run()设置一个线程池,IO服务可以使用它来执行异步任务.它明确指出已加入池的所有线程都被视为等效.

这是否意味着不可能有一个单独的线程用于从套接字读取而另一个用于写入?如果有可能,我该如何实现?

Cha*_*via 5

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