可以使用 boost::threads 中的 std::this_thread* 函数吗?

2023-12-21

可以混合搭配来自的东西吗?boost::thread and std::thread,或者应该为每个函数使用一组函数?

我问是因为我的代码使用boost::threads,但我发现boost::this_thread::sleep_for设置系统时间时表现不正常,但是std::this_thread::sleep_for是的,所以我想改变我的睡眠函数调用并避免改变我的所有boost::threads to std::thread如果可能的话。


在实践中,您可能会逃脱惩罚/因为实现使用相同的实现(例如pthread在 Linux 上)。

然而,你will打破不变量。简单的例子:Boost Thread 的中断点无法与非 Boost 同步原语一起工作(包括std::this_thread::sleep_*).

因此我实际上建议反对mixing用于控制相关线程的库,以免您冒遇到意外的风险 ¹

当然,如果库有完全独立的关注点(例如,它们在内部“在黑匣子中”使用线程),那么将这些库组合在一个进程中应该没有问题。


1 我可以看到死锁的发生,数据竞争/泄漏不需要太多的想象力(想想线程本地数据支持/call_once/set_value_at_thread_exit...)

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

可以使用 boost::threads 中的 std::this_thread* 函数吗? 的相关文章

随机推荐

  • Pod 未找到:在 64 个 gem 中找不到“cocoapods”(>= 0)(Gem::LoadError)

    安装 cocoapods 后sudo gem install cocoapods 尝试运行pod setup返回此错误 Could not find cocoapods gt 0 among 64 total gem s Gem LoadE
  • 如何发送 Bundle 中的自定义对象的 ArrayList

    我有一个应用程序 它使用服务每 x 秒创建一个自定义对象 MyObject 的 ArrayList 然后我希望我的 Activity 获得这个 ArrayList 我目前计划让服务在每次完成数据查询时向活动处理程序发送一条消息 我希望发送给
  • Spring Batch 中的 NonTransientFlatFileException

    我试图读取一个包含 100 条记录的 CSV 文件 并一次性处理一批 10 条记录 一切工作正常 但处理完所有记录后 我得到 org springframework batch item file NonTransientFlatFileE
  • Angular ng build --target=product 给出错误

    我使用 Angular CLI 创建了一个新的 Angular 项目 我使用的版本是 Angular Cli 1 0 2 角度 4 0 0 我在其中添加了很多代码 但是现在 当我使用下面的命令构建我的项目时 我收到了一堆错误 ng buil
  • c 定义多行宏?

    define DEBUG BREAK a if a asm int 3 我已经按照上面定义了一个宏 并尝试使用它 include test define h int main DEBUG BREAK 1 1 return 0 但该示例无法编
  • 登录 Clojure

    对于Java开发 我使用Slf4j和Logback Logger logger LoggerFactory getLogger HelloWorld class logger debug Hello world 如何在 Clojure 程序
  • 使用 GDI+ 旋转图像而不剪裁其边缘的最快方法是什么?

    有一些非常漫长且饥饿的算法可以做到这一点 但到目前为止我还没有想出或发现任何特别快的算法 最快的方法是使用不安全调用直接操作图像内存LockBits 听起来很可怕 但其实很简单 如果您搜索 LockBits 您会发现大量示例 例如here
  • DevPay和Mfa是互斥的授权方式

    我尝试使用以下命令通过 AWS cli 将 MFA 删除添加到我的 S3 存储桶 aws s3api put bucket versioning bucket
  • 2D 软体:凝胶状和可塑性?

    我正在使用 Matter js 物理学来尝试创建软体 我能够创建这样的身体 但我不确定这是否是我想要的 软体 确实 这个物体并不完全是刚性的 并且在碰撞和被拖动时具有弹性的感觉 我一直在寻找与凝胶有相似之处的身体 这张图片可能在视觉上有助于
  • Pandas 分割错误

    由于内存不足 以下代码行未成功执行 import pandas as pd import datetime as dt u cols remote host dummy1 dummy2 date timezone get status by
  • PDO 错误:一般错误:2031 [重复]

    这个问题在这里已经有答案了 当我执行代码时出现此错误 我知道这已经在这里讨论过几次了 但我无法通过阅读那里提供的解决方案来解决我的问题 这是我得到的错误 致命错误 未捕获异常 PDOException 消息为 SQLSTATE HY000
  • 对于软件开发人员来说,学习如何对微控制器进行编程有多难?

    我是一名软件开发人员 我使用高级语言进行编程已有几年了 我想知道如何迈出硬件编程的第一步 不是什么疯狂复杂的东西 但也许是一些普通的 CE 设备 假设我不需要将 PCB 与各种组件放在一起 而只是对微型 cpu 进行编程 我要到多低的级别
  • 该算法的复杂度(Big-O)是多少?

    我对算法分析相当熟悉 并且可以说出我使用的大多数算法的大体 但我已经被困了几个小时 无法为我编写的这段代码想出 Big O 基本上 它是一种生成字符串排列的方法 它的工作原理是使字符串中的每个字符成为第一个字符 并将其与子字符串减去该字符的
  • 我可以在摘要式身份验证中使用已 MD5 编码的密码吗

    我在数据库中有密码的 MD5 哈希值 我想将其用于 HTTP AUTH DIGEST 但在阅读文档时 摘要哈希看起来包含用户名 领域和明文密码的哈希 在这种情况下有什么办法可以使用密码的 MD5 哈希吗 不 如果他们需要的哈希是这样生成的
  • Spark 结构化流:多个接收器

    我们使用结构化流从 Kafka 进行消费 并将处理后的数据集写入 s3 我们还想将处理后的数据写入 Kafka 是否可以通过同一个流查询来完成此操作 火花版本2 1 1 在日志中 我看到流式查询进度输出 并且我有来自日志的示例持续时间 JS
  • 分割字符串后将值插入表中

    我想将值插入员工表中 这些值是字符串格式的 分开 E g AA B 123 我使用以下函数分割它 CREATE FUNCTION db owner FN Split String varchar 8000 Delimiter char 1
  • 在异步方法中使用反射获取方法名称不会返回预期结果

    以下是我编写的一小段代码 用于演示此问题的基础知识 Code private async void Form1 Load object sender EventArgs e var result await TestAsyncMethodN
  • 查找鼠标相对于面板的位置

    我试图获取鼠标在面板中的位置 如面板左上角 x y 0 0 我目前所拥有的给出了整个屏幕上的位置 因此根据面板 位于框架中 在屏幕上的位置 坐标是不同的 我想你可以添加 x y 坐标来解决这个问题 但这似乎是一个混乱的解决方案 有人可以帮忙
  • 错误的身份验证数据 QuickBlox - Android

    我正在研究QuickBlox SDK http quickblox com developers SimpleSample users android Sign In 26 Social authorization 使用这个 SDK 我尝试
  • 可以使用 boost::threads 中的 std::this_thread* 函数吗?

    可以混合搭配来自的东西吗 boost thread and std thread 或者应该为每个函数使用一组函数 我问是因为我的代码使用boost threads 但我发现boost this thread sleep for设置系统时间时