加入线程:“避免资源死锁”

2023-12-08

我使用一个 C++ 类来封装升压::asio::io_service.

class IoService {
 public:
  static IoService& getInstance() {
    static IoService instance;
    return instance;
  }
  void start() {
    _ioServiceThread = std::thread(&IoService::run, this);
  }
  void stop() {
    _ioService.stop();
    _ioServiceThread.join();
  }
  void run() {
   _ioService.run();
  }

 private:
  IoService();
  ~IoService();
  IoService(const IoService& old) = delete;
  IoService(const IoService&& old) = delete;
  IoService& operator=(const IoService& old) = delete;
  IoService& operator=(const IoService&& old) = delete;

  boost::asio::io_service _ioService;
  std::thread _ioServiceThread;
};

但是当我调用 stop 方法时,程序在连接时崩溃:

terminate called after throwing an instance of 'std::system_error'
what():  Resource deadlock avoided
Aborted

你怎么认为 ?


这是当线程尝试加入自身时出现的错误。

所以听起来你的问题是你正在打电话stop()方法来自由调用的处理函数io_service.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加入线程:“避免资源死锁” 的相关文章

  • 如何识别 SQL Azure 中的死锁?

    我有一个由两个实例组成的 Windows Azure 角色 有时交易会失败并显示SqlException与以下文字 事务 进程 ID N 在锁资源上与另一个进程发生死锁 并被选为死锁牺牲品 重新运行事务 现在我已经谷歌搜索了一段时间并阅读这
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何将带有自定义分配器的 std::vector 传递给需要带有 std::allocator 的函数?

    我正在使用外部库 pcl 因此我需要一个不会更改现有函数原型的解决方案 我正在使用的一个函数生成一个std vector
  • 尝试使用 boost.multi precision 编译项目时出现 C2143/C2518

    我在尝试让 boost multi precision 在我的 VC2017 项目中工作时遇到了问题 我试图使最简单的项目成为可能作为概念证明 include
  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • BOOST 中的属性图是什么?

    有人可以向像我这样的 Boost 初学者解释一下 Boost 中的属性映射是什么吗 我在尝试使用 BGL 计算强连通分量时遇到了这个问题 我浏览了属性映射和图形模块的文档 但仍然不知道如何理解它 以这段代码为例 make iterator
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何使用 c++ libboost 运行进程并获取其输出?

    我正在尝试运行外部 shell 命令并使用 C 的 Boost 库读取其输出 但似乎该命令未运行或我无法访问输出 我在用着他们的文档 https www boost org doc libs 1 65 1 doc html boost pr
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • 正则表达式:如何找到模式的最大整数值?

    想象一下我有以下字符串 I ll have some 1 some 42 and maybe some 5 as well 基本上 我有兴趣了解遵循模式 integer 的最大整数值 我什至不确定是否可以使用正则表达式 我可以使用什么正则表
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • Boost Graph Library:防止DFS访问未连接的节点

    我有一个双向图 一些顶点未连接 我用升压 深度优先搜索遍历顶点 我还提供了起始源节点 我看到在连接的节点完成后 未连接的顶点也被处理 如何防止访问此类节点 事实上 我怎样才能告诉DFS只访问那些从源节点可达的节点而不访问其他任何节点呢 我有
  • std::regex 的行为不一致

    我有以下问题 std regex如果我传递结果 行为会有所不同boost filesystem path string vs 将结果存储在中间字符串变量中 第一个将返回一个被截断的匹配 并且稍后不被接受std stoull 抛出 inval
  • Android NDK 互斥锁

    我一直在将跨平台 C 引擎移植到 Android 并注意到它在调用时会莫名其妙地 并且不一致地 阻塞pthread 互斥锁 这个引擎已经在多个平台上运行了很多年 并且有问题的代码多年来没有改变 所以我怀疑这是一个死锁或其他有错误的代码 这一
  • 为什么 boost::geometry::intersection 不能正确工作?

    我为 Boost Geometry 交集函数编写了下一个测试函数 typedef boost geometry model polygon
  • Boost 测试与 Google 测试框架

    我是单元测试世界的新手 基本上我是 C 开发人员 在一个大型产品上工作了近 3 年 现在我决定对我的代码执行自动化单元测试 为此 我在互联网上做了很多研究 遇到了很多工具和框架 最终选择了以下两个 1 Boost测试库 2 Google C
  • C++ Boost:此警告的原因是什么?

    我有一个带有 Boost 的简单 C 如下所示 include

随机推荐

  • 从 Ubuntu 中完全卸载 PHP [关闭]

    Closed 这个问题是无关 目前不接受答案 有人可以告诉我如何从 Ubuntu 中完全卸载 PHP 吗 因此 我在安装 MySql 时遇到问题 似乎存在一些未满足的依赖关系 我想我搞砸了整个安装过程 有人可以帮我解决这个问题吗 这不是一个
  • ExifInterface 和 VM 中止发生奇怪的致命崩溃

    我在使用 ExifInterface 时遇到了奇怪的致命崩溃 导致崩溃的行是这样的 非常简单 Foto java 341 ExifInterface exif new ExifInterface filename 我只看到一些图片就崩溃了
  • 用户友好的 URL 而不是查询字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 在 php 中使用 seo 用户友好 codeigniter 中的自定义路由 我正在开发一个 CMS 我想使用用户友好的 URL 而不是查询字符串 e g mysite com cat 1 gt my
  • 多个模型之间的多对多字段关系

    我有以下代表书籍和作者的模型 一本书可以有多个作者 一个作者可以写多本书 所以我使用 Django 的ManyToManyField键入以将两个模型相互链接 我可以添加一个Book 也许使用 Django Admin 并创建一个Author
  • 如何在 Swift 中创建二维数组?

    你好 我是 Swift 新手 我正在尝试将经度和纬度以及地名从地图的坐标对象保存到多维数组 即 谁能帮我如何动态创建这些 var pinArray 0 Lat 51 130231 var pinArray 0 Lon 0 189201 va
  • 通过 BLE 传输大数据块的最佳方法

    我是 BLE 的新手 希望您能够指出我正确的实施方法 我正在开发一个应用程序 其中外围 电池供电 设备不断聚合传感器读数 在移动端应用程序上会有一个 同步 按钮 按下按钮后 我想将外围设备中积累的所有传感器读数传输到移动应用程序 同步之间的
  • 具有 X.509 证书的 Spring Security

    我正在慢慢地疯狂尝试配置 Spring Security 3 0 0 以保护应用程序 我已将服务器 码头 配置为需要客户端身份验证 使用智能卡 但是 我似乎无法正确获取 applicationContext security xml 和 U
  • new Date("YYYY/MM") 不适用于 IE 11

    在我的项目中 我使用下面的js代码来获取日期 仅输入日期年和月 var current time new Date current 当前数据是这样的 2017 04 它在 chrome 上工作得很好 但在 IE 11 上 我得到了 curr
  • 按 2d 张量中的值索引 pytorch 4d 张量

    我有两个 pytorch 张量 X有形状 A B C D I有形状 A B 值在I是范围内的整数 0 C 获得张量最有效的方法是什么Y有形状 A B D 这样 Y i j k X i j I i j k 您可能想使用torch gather
  • Active Directory 搜索 - 按经理过滤

    我正在尝试从 Active Directory 获取具有指定管理员的用户列表 我使用以下 LDAP 过滤器但没有成功 manager CN Misterboss n 但是 它不返回任何结果 用户在 manager 属性中具有以下值 CN M
  • iPhone SDK 非原子和原子

    非常快速和简单的问题 在 Objective C 中 非原子和原子之间有什么区别 就像声明 property 非原子 保留 id 对象 这样的属性时 非原子保留 getter 和 setter 的代码在概念上类似于 id foo retur
  • 可以在单个 Windows 服务中托管多个 WCF 进程吗?

    我有一个托管在 Windows 服务中的 WCF 进程 我想知道是否可以安全地让多个 WCF 进程在同一个 Windows 服务中托管执行不同的操作 我需要担心端口吗 我正在使用 mex 端点 编辑 所以似乎正在修剪我冗长的代码 配置示例
  • 从 HList 中提取 FieldType 键和值

    我想提取一个头部的键和值HList使用这两种方法 def getFieldName K V value FieldType K V implicit witness Witness Aux K K witness value def get
  • 子集总和查找所有子集之和等于一个数字

    我一直在学习动态规划 我想通过打印出所有加起来等于一个数字的子集来进一步解决经典的子集和问题 我到底该怎么做呢 到目前为止 我知道如何根据是否存在相加的子集来打印 true 或 false public static boolean has
  • 解决包冲突

    假设我们有一个名为com example1含有一个Hello类 以及其他类 然后我们还有另一个包com example2还含有一个Hello类 显然具有不同的行为 现在假设我们需要 com example1 中的每个类和 com examp
  • 可以先为 ASP.Net 或 ASP.Net MVC 站点创建 HTML 吗?

    首先为 ASP Net 或 ASP Net MVC 站点编码 HTML 然后将其交给编码人员 这样可行吗 如果没有 整合这些的最佳方法是什么 这是绝对可以接受的 这是 MVC 的伟大之处之一 创建您的 HTML 和 CSS 让开发人员在动态
  • 如果我不打算返回任何内容,我应该使用像map和filter这样的数组方法吗?

    去年我一直在使用数组方法 例如map and filter更常见的是代替数组上的标准 for 循环 它感觉更容易阅读和编写 并且可以完成我最有可能要做的所有事情 例如创建局部变量 但很多时候我不会返回任何东西 不过埃斯林特不太喜欢我 据他们
  • 返回传递给函数的所有参数的总和

    一种方法是使用参数 我可以循环参数数组并返回所有传递的参数的总和 function sum var sum 0 for var i 0 i
  • Android Studio 与实验性 gradle 0.2.0

    我正在尝试使用最新版本的 android studio 设置基本的 ndk 构建 试图跟随本教程 这是我的gradle wrapper properties Thu Sep 17 14 22 34 CST 2015 distribution
  • 加入线程:“避免资源死锁”

    我使用一个 C 类来封装升压 asio io service class IoService public static IoService getInstance static IoService instance return inst