【发布时间】:2018-04-07 08:29:30
【问题描述】:
我有一个使用 boost asio 编写的单线程异步 tcp 服务器。每个传入的请求都会经过几个处理步骤(同步和异步),最后使用异步写入发回响应。
对于具有 10 个并发请求的小负载,它运行良好。但是,当我使用 100 的并行度进行测试时,情况开始恶化。随着时间的推移,响应延迟开始增加。所以,我想尝试一些多线程处理来处理请求。
我正在寻找一个体面的示例/帮助来创建和运行多个线程以异步读取/写入客户端。我有以下疑惑:
- 我应该使用单个 IOS 对象并在线程池的所有线程中调用其 run 方法,还是应该为每个线程使用单独的 IOS?
- 如果我使用单个 IOS,是否有可能部分 tcp 数据到一个线程,而另一部分到另一个线程等等.. 这种理解是否正确?
- 还有其他更好的方法吗?
感谢您的帮助和指点。
【问题讨论】:
标签: c++ multithreading boost boost-asio