首页 > 解决方案 > 同一个程序中是否可以有两个升压受体?

问题描述

我的 boost 服务器意外停止接受传入连接,因为我团队中的其他人在不同的线程中使用 boost 接受器创建了另一个服务器(使用不同的端口)?这是否正常以及如何使它们两个服务器独立工作而不互相干扰?

已解决:接受者与它无关,这家伙在某处开始了一个无限循环,阻塞了其他组件。我想这就是团队工作不协调时会发生的情况:(对不起,伙计们,sehe一如既往地是最好的

标签: c++boostboost-asio

解决方案


按照设计,我们使用多个接受器和一个 io_service 就好了。

此外,我们在多个其他io_service 实例之间共享工作,使用相同的套接字,这很好,就像设计一样。

您的代码库中可能发生的情况是反模式:如果人们调用stop()您的io_service实例,那么是的,这将对同样在同一实例上排队的任何其他异步操作造成严重破坏。

因此,一般来说,这个想法是避免在共享实例上使用stop()或类似的“生命周期”操作。io_service这种调用的唯一合适时间是在强制关闭序列期间,但真正优雅的关闭应该让所有活动连接关闭并耗尽待处理的工作,以便运行的线程io_service::run无论如何都会自发完成。

也可以看看:


推荐阅读