C++多线程服务器帮助

flu*_*mpb 3 c++ multithreading boost boost-asio

我正在使用boost-asio在c ++中使用多线程服务器.目前我遇到的一个设计问题是擦除连接.

我有一个服务器实例,它包含一个连接对象的向量.这些连接接收我解析的命令.一个命令特别处理向我的向量中的所有连接发送数据.

现在,当连接断开连接时,我正在从向量中删除此连接并调用析构函数.当某人'SendAll'同时有人'断开'时,我似乎会遇到问题.

任何人都可以推荐一个更好的设计或只是指出我正确的方向?任何帮助非常感谢.谢谢

Sam*_*ler 5

无论什么类维持这种连接向量都需要一条.使用strand::poststrand::dispatch访问,添加或从向量中删除时.该链的概念进行了详细的文档中解释.

strand被定义为事件处理程序的严格顺序调用(即没有并发调用).使用strands允许在多线程程序中执行代码,而无需显式锁定(例如使用互斥锁).