我有一个基于implementation shown here的服务器应用程序。此实现将新会话创建为shared_ptr
。只要客户端已连接,会话就会保持活动状态。当客户端断开连接时,会话对象被销毁。这很方便,但是......
问题:我希望能够跟踪会话,原因有两个:
我该怎么做?
理想情况下,我希望能够遍历所有活着的会话。
shared_ptr
new_session->start()
添加到某个容器
这个问题是会话永远不会被破坏,即使用户断开连接也不会...当然,这是因为shared_ptr
的一个实例仍然存在于容器中,这意味着我有定期检查shared_ptr
计数== 1的数量,这将使设计复杂化并产生可怕的线程安全复杂性。
这个解决方案可以工作(我在这里猜测),但它感觉很难看很复杂,在继续这个混乱之前我想要一些建议。我确信那里有一个比我聪明的人能够找到一个更聪明的解决方案,或者让我意识到boost ASIO已经为此提供了解决方案。