有关boost.asio复合操作的一些事情,从官方文档和我读过的关于该主题的各种线程中都不清楚。
情景
在单个TCP套接字上安排了两个boost::asio::async_write
个请求A和B.
问题
async_write_some
的中间调用与B的调用(实际上是一个损坏的流)?io_service::strand
是否在单线程进程中解决了问题?是否确保在B开始之前A的所有中间调用都已完成?io_service.strand
时,io_service::run()
是否解决了多线程进程中(1)的问题?是否确保在B开始之前A的所有中间调用都已完成?答案 0 :(得分:2)
因此,绝不能同时调用多个async_write
。在单线程的情况下,可以链接它们,在前一个完成hanndler中调用后续的async_write
。
如果io_service::run
在多个线程中运行,只需用async_write
包裹strand
的完成处理程序,然后用所有中间内部处理程序包装Asio will synchronize。