Oli*_*r K 5 c++ boost boost-asio
似乎所有示例总是显示在所有线程中运行相同的io_service.
你能开始多个io_services吗?这是我想做的事情:
在主线程中启动io_service A以处理用户输入...
在另一个线程中启动另一个io_service B,然后可以启动一堆工作线程全部共享io_service B.
io_service A上的用户可以在io_service B上"发布"工作,以便它在工作池上完成,但是在io_service A上没有工作,即主线程.
这可能吗?这有意义吗?
谢谢
好问题!
是的,这是可能的。在我当前正在开发的应用程序中,我已将应用程序分解为负责系统不同方面的单独组件。每个组件都在自己的线程中运行,有自己的一组计时器,使用 asio 执行自己的网络 I/O。从可测试性/设计的角度来看,它对我来说似乎更干净,因为没有一个组件可以干扰另一个组件,但我愿意接受纠正。我想我可以重写 io 服务中作为参数传递的所有内容,但目前还没有发现需要这样做。
所以回到你的问题,你可以做任何你想做的事情,在我看来,这更多的是尝试一下,如果遇到任何问题就改变它。
另外,您可能想看看 Sam Miller 在处理用户输入的另一篇 WRT 文章中指出的内容(即如果您使用的是控制台):/sf/ask/364755751/ -如何编写控制台服务器
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |