繁体   English   中英

C ++多线程服务器帮助

[英]C++ Multithreaded server help

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

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

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

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

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

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

围绕矢量锁定不是一个选项? 每次访问向量都会获得锁定; 这将阻止你的竞争条件。 只要服务器连接不频繁出现,它就不会成为瓶颈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM