【发布时间】:2011-10-15 20:51:59
【问题描述】:
如何通过 strand 对 socket 进行 async_* 操作?我看过 Timer.5(Boost/Asio 示例),但它们只显示了如何调用用户的处理程序。当我async_write 到多线程应用程序中的套接字时,数据可能被写入损坏。并且strand 保证这些处理程序都不会同时执行。
【问题讨论】:
-
您具体遇到了什么问题?使用
strand与 not 使用strand时执行异步操作没有显着差异。只需将您的处理程序包裹在链中即可。 -
这个问题目前的措辞没有意义,请编辑它并添加一些清晰度。
-
这对我来说很有意义。我有同样的问题。多个线程试图使用单个连接读/写请求响应并且都搞砸了。我想要实现的是顺序读取请求/执行任何需要处理的操作(甚至是对不同服务的另一个请求/响应),然后将响应返回给原始请求者。
标签: sockets boost asynchronous boost-asio