我正在为 Windows 客户端使用 Boost::ASIO 版本 1.52.0。我希望能够专用一个线程来处理从服务器接收的所有消息,然后另一个专用线程来处理所有传出到服务器的消息。我现在io_service
对两个线程使用相同的对象。我担心的是,当io_service::run()
调用该方法时,处理传出消息的线程可能会被安排来处理一些传入消息调用,反之亦然。所以,我的问题 - 这可能吗?如果是,那么使用第二个io_service
对象会解决问题吗 - 每个线程一个?有没有更好的方法来设计这个?我试图避免对读取和写入处理程序使用多个线程。
async_reads
我想确认的另一件事是 - 我已经读过如果可以同时完成2 个或更多,则应该使用锁来单线程代码。同样对于async_writes
. an async
如果_read 可以与 an 同时执行,是否也应该使用锁async_write
,还是应该是线程安全的?
最后一个问题 -在工作线程调用run 方法之前,async_connect
可以从不同的线程调用 async 方法吗?async_read
async_write
io_service