同一程序中可能有两个增强受体吗?

时间:2018-12-20 14:23:41

标签: c++ boost boost-asio

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

已解决:受体与它无关,这个家伙在阻止其他组件的地方开始了无限循环。我猜这是团队不协调时会发生的事情:(抱歉,sehe一如既往地是最好的

1 个答案:

答案 0 :(得分:4)

根据设计,我们可以将多个接受器与一个io_service一起使用。

此外,我们可以使用设计相同的套接字在多个 other io_service实例之间共享工作。

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

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

另请参阅: