我正在使用 boost-asio 在 C++ 中开发多线程服务器。目前我遇到的一个设计问题涉及擦除连接。
我有一个服务器实例,其中包含连接对象向量。这些连接接收我解析的命令。其中一个命令专门处理向我的向量中的所有连接发送数据。
现在,当连接断开时,我正在从向量中删除该连接并调用析构函数。当有人“SendAll”同时有人“Disconnect”时,我似乎会遇到问题。
谁能推荐一个更好的设计或者只是为我指出正确的方向?非常感谢任何帮助。谢谢
无论什么类维护这个连接向量都需要一个strand http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/reference/io_service__strand.html. Use strand::post
or strand::dispatch
当访问、添加或删除向量时。这链概念 http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/overview/core/strands.html文档中有详细解释。
链被严格定义为
事件的顺序调用
处理程序(即没有并发
调用)。使用股线允许
在多线程中执行代码
程序无需显式
锁定(例如使用互斥体)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)