c++ - 同一个程序中是否可以有两个升压受体?
问题描述
我的 boost 服务器意外停止接受传入连接,因为我团队中的其他人在不同的线程中使用 boost 接受器创建了另一个服务器(使用不同的端口)?这是否正常以及如何使它们两个服务器独立工作而不互相干扰?
已解决:接受者与它无关,这家伙在某处开始了一个无限循环,阻塞了其他组件。我想这就是团队工作不协调时会发生的情况:(对不起,伙计们,sehe一如既往地是最好的
解决方案
按照设计,我们使用多个接受器和一个 io_service 就好了。
此外,我们在多个其他io_service 实例之间共享工作,使用相同的套接字,这很好,就像设计一样。
您的代码库中可能发生的情况是反模式:如果人们调用stop()
您的io_service
实例,那么是的,这将对同样在同一实例上排队的任何其他异步操作造成严重破坏。
因此,一般来说,这个想法是避免在共享实例上使用stop()
或类似的“生命周期”操作。io_service
这种调用的唯一合适时间是在强制关闭序列期间,但真正优雅的关闭应该让所有活动连接关闭并耗尽待处理的工作,以便运行的线程io_service::run
无论如何都会自发完成。
也可以看看:
推荐阅读
- python - 语言规范/定义和语言参考之间的区别
- object - Elixir - 使用变量动态访问对象属性
- list - 我有两个清单。list1 作为键,list2 作为值。如何将值列表附加到 list1 中的相同键?
- javascript - 如何从 javascript 模块中引用无服务器框架自定义属性?
- neo4j - 以下 neo4j CQL 的性能调整
- java - 使用@Before 和@After 注释的Junit 方法不起作用
- delphi - 他们有任何关于如何在 delphi 中使用 Winapi.Security.Cryptography.pas 的例子吗?
- microsoft-teams - 更新静态选项卡的设置
- python - 部署 python 命令行脚本的最佳方法?
- requirejs - 如何将 PptxGenJS 与 RequireJS 一起使用