同一程序中是否可以有两个升压受体?

Nik*_*nko 2 c++ boost boost-asio

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

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

seh*_*ehe 5

按照设计,我们将多个接受器与单个 io_service 一起使用就很好了。

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

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

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

也可以看看: