我的Boost服务器意外停止接受传入的连接,因为我团队中的其他人在另一个线程(使用不同的端口)中使用Boost Acceptor创建了另一个服务器吗?正常吗?如何使它们两台服务器独立工作而不互相干扰?
已解决:受体与它无关,这个家伙在阻止其他组件的地方开始了无限循环。我猜这是团队不协调时会发生的事情:(抱歉,sehe一如既往地是最好的
答案 0 :(得分:4)
根据设计,我们可以将多个接受器与一个io_service一起使用。
此外,我们可以使用设计相同的套接字在多个 other io_service实例之间共享工作。
您的代码库中可能发生的是反模式:如果人们在您的stop()
实例上调用io_service
,那么是的,这会对在相同实例上排队的任何其他异步操作造成破坏。 / p>
因此,通常的想法是避免在共享的stop()
实例上使用io_service
或类似的“生命周期”操作。进行此类调用的唯一适当时间是在强制关闭序列期间,但真正的正常关闭应该让所有活动的连接都关闭,而挂起的工作将被耗尽,以便运行io_service::run
的线程无论如何都会自发完成。
另请参阅: