C++ 多线程服务器帮助

2024-03-08

我正在使用 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(使用前将#替换为@)

C++ 多线程服务器帮助 的相关文章

随机推荐

  • Dynamics CRM 2011 中如何拥有多个 javascript 库

    是的 我正在创建一个方法 将帐户添加到 Dynamics CRM 并使用 Ajax POST 到内置 Web 服务 代码如下 var context GetGlobalContext var serverUrl context getSer
  • 将值类型转换为泛型

    我有一个泛型类 我需要将其限制为仅值类型 int float 等 我有一个基于类型测试调用 Parse 方法的方法 例如 class MyClass
  • 如何连接 MySQL 中的结果集?

    我想用逗号作为分隔符字符串来连接 MySQL 中集合中返回的结果 例如 返回的集合包含 COLUMN X john jerry maria joseph gugla 我希望收到的结果为 COLUMN X concat john jerry
  • 静态构造函数和异常

    如果静态构造函数抛出异常且未处理 会发生什么情况 它会一直保留到应用程序域处于活动状态吗 静态构造函数中未处理的异常将被包装在TypeInitializationException 如果您使用的是 NET 2 或更高版本 则未处理的异常将终
  • 错误:ENOENT:没有这样的文件或目录,scandir './commands/'

    当我想使用不和谐时 我收到此错误输出 Error ENOENT no such file or directory scandir commands 90m at Object readdirSync fs js 1021 3 39m at
  • 如果存在重复的模块名称,Python 指定从哪个模块导入?

    相关 从相对路径导入模块 https stackoverflow com questions 279237 import a module from a relative path dirA A py B py dirB B py A py
  • .NET MVC 5 中的 Angular 6 应用程序,角度路由不起作用

    我已将 Angular 6 应用程序嵌入到现有的 NET MVC 5 应用程序中 我在 MVC 应用程序 RouteConfig cs 中添加了一条指向 Home Index 的后备路由 因此 未知 路由将传递到 Angular 应用程序的
  • 什么是 STUN?它是否需要端口转发服务器?

    我对没有基础服务器的 p2p 通信进行了一些研究 并通过了 STUN 据我所知 STUN 是 NAT 打孔 的一种方式 不需要对等方进行端口转发即可连接 这是正确的吗 打孔到底是什么意思 这一切看起来都很脆弱 因为如果不需要端口转发 它就会
  • 自制软件安装时出现 OSX 代理问题

    我尝试对我的问题进行所需的搜索 但没有得到我需要的答案 目标 安装自制程序并使用自制程序 我正在使用的操作系统 OS X El Capitan 以下是我的问题 我是 OS X 和 Homebrew 的新手 我正在尝试使用以下命令从我的家庭网
  • Google App Engine:“没有名为 google.appengine.ext 的模块”

    我在测试我的 main py GAE 应用程序时收到此错误 Traceback most recent call last File main py line 4 in
  • WebGL/OpenGL:根据设备方向旋转相机

    我有一个 Web 应用程序 我试图在 3D 空间中显示地图图像图块的平面 我希望无论设备如何旋转 平面始终保持水平 最终效果类似于这个航海罗盘演示 http people opera com richt release demos orie
  • 如何使 HA 代理保持活动状态

    在我的环境中 我有 2 个 Web 服务器 Apache 的 haproxy 负载平衡 这是我的 HA 代理配置 global log 127 0 0 1 local2 chroot var lib haproxy pidfile var
  • 在 C# 中对 dataGridView 列进行排序? (Windows窗体)

    我有一个从 sql 表绑定的 datagridview 在该 dv 中我有这些属性 Id Name 和 Price 当我将名称列的排序模式设置为自动并单击此列的标题时 我可以根据名称的第一个字母对此 dv 进行排序 这样我可以根据产品的第一
  • SoapUI 响应中出现“不理解“MustUnderstand”标头”错误

    我正在尝试使用 SoapUI 进行 Web 服务的自动化测试 当我从应自动进行测试的服务器发送请求时 我总是得到以下响应 Request Request Headers Authorization Basic Host domino aut
  • 页脚隐藏浮动导航 - 一旦浮动导航到达页脚,有什么方法可以向上滑动浮动导航吗?

    我正在尝试向侧边栏添加浮动导航 当你开始滚动后 我让 jquery 将导航浮动到顶部 它在顶部工作正常 但一旦到达底部 页脚就会隐藏导航 导航到达某个点后需要向上滚动 有什么解决办法吗
  • UITableViewCell 内的 UITextView - 如果不单击链接,则触摸通过

    我试图利用 UITextView 与 TableViewCell 内的数据检测器类型的优势 而 TableViewCell 本身是可点击的 唯一的问题是 我需要 UITextView 的链接可单击 因此 userInteractionEna
  • 未处理的异常会导致WCF服务崩溃吗?

    我想知道未处理的异常是否会导致WCF服务崩溃 我编写了以下程序 该程序显示 WCF 服务启动的线程中未处理的异常将使整个 WCF 服务崩溃 我的问题是 我想确认线程中未处理的异常 由WCF服务启动 是否会导致WCF崩溃 我的困惑是我认为 W
  • C - 转换为 2 补码

    我决定这样做 翻转数字 0 1 1 0 LSB 加 1 如果进位 则循环直到 array i 0 但我坚持最后一点 我怎么能在条件循环中这么说呢 您正在谈论扩展算术 大多数处理器都有每次加法运算的进位和溢出结果 但 C 不提供对它们的访问
  • AngularJS - 创建服务对象

    我认为这可能更多是关于 javascript 问题 而不是在 Angular 邮件列表中发帖 希望SO社区也能给予更快的回应 我正在尝试将数据封装在服务中并注入到控制器中 angular module myApp services ngRe
  • C++ 多线程服务器帮助

    我正在使用 boost asio 在 C 中开发多线程服务器 目前我遇到的一个设计问题涉及擦除连接 我有一个服务器实例 其中包含连接对象向量 这些连接接收我解析的命令 其中一个命令专门处理向我的向量中的所有连接发送数据 现在 当连接断开时