我正在使用boost-asio在c++中的多线程服务器上工作。目前,我遇到一个设计问题,涉及擦除连接。
我有一个服务器实例,其中包含一个连接对象 vector 。这些连接接收我解析的命令。一个命令特别处理将数据发送到我的 bootstrap 中的所有连接。
现在,当连接断开时,我当前正在从引导中擦除此连接并调用析构函数。似乎有人“SendAll”同时有人“断开”时,我会遇到问题。
谁能推荐一个更好的设计或只是向我指出正确的方向?任何帮助,不胜感激。谢谢
最佳答案
无论什么类维护此连接 vector ,都需要一个strand。访问,添加到 vector 或从 vector 中删除时,请使用strand::post
或strand::dispatch
。 strand concept在文档中进行了详细说明。
关于c++ - C++多线程服务器帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4640058/