在使用 libstdc++ 进行调试期间强制使用 std::atomic 内部的锁

2024-04-22

我用谷歌搜索了一下,似乎找不到GCC选项或libstdc++ 库宏为此。是否可以强制在所有的内部使用锁定std::atomic模板专业化。在某些平台上,某些专业化无论如何都会锁定,因此这似乎是一个可行的选择。

过去我发现使用std::atomic使用诸如以下工具调试数据争用时会非常痛苦Valgrind (Helgrind or DRD)由于大量的误报。如果原子的使用足够普遍,那么抑制文件似乎不是一个非常可扩展的解决方案。


没有办法,据我所知。 GCC 通过无锁内置函数实现 C++11 原子(__atomic_fetch_add, __atomic_test_and_set, ETC)。根据机器定义中可用的内容,GCC 可能会发出一些有效的 insn 序列,或者作为最后的手段,使用比较和交换循环。如果没有可用的东西,GCC 只会发出对具有相同名称和参数的外部函数的调用。

http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/_005f_005fatomic-Builtins.html#_005f_005fatomic-Builtins http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/_005f_005fatomic-Builtins.html#_005f_005fatomic-Builtins

附言。实际上,你可以编译-m32 -march=i386并为自己提供所需的外部功能。

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

在使用 libstdc++ 进行调试期间强制使用 std::atomic 内部的锁 的相关文章

随机推荐

  • 将原型 bean 自动装配到原型 bean 中?

    我正在使用一些现有的代码 它正在做我以前从未见过的事情 我已经使用方法注入将原型 bean 自动装配到单例中 或者使用 getBean 从上下文中获取 bean 我在这段代码中看到的是一个 bean 它是一个原型并使用 getBean 检索
  • 如何从 Survey Monkey 调查中获取受访者 ID?

    故事 我正处于为我公司正在制定的零售商激励计划创建视频教学引擎的初始阶段 其运作方式是零售商将注册并获得登录系统以访问内容的能力 登录后 零售商将观看有关我公司产品的短视频 然后他们将被要求回答有关该产品的 3 或 4 个问题 我们的想法是
  • PHP 将字符串解析为条件运算符

    我有一个表单 用户可以在其中创建自己的条件 例如
  • 绘制 matplotlib 图表以显示直方图箱中的总计数

    我正在尝试显示直方图 下面的数组是直方图每个单独箱的计数 binVals 0 5531608 6475325 1311915 223000 609638 291151 449434 1398731 2516755 3035532 29769
  • 如何制作轨道时间戳

    make 如何保留文件的时间戳 我正在尝试将我的 git 存储库部署到位 我正在为大多数不会改变的文件添加预编译的二进制文件 现在 当我从 git 签出存储库时 我不想编译这些 c 文件 我想使用这些预构建的二进制文件 因此 为了设置这个方
  • 如何在 MATLAB 中调整矩阵大小?

    假设我有一个1 by 12矩阵 我想将其调整为4 by 3矩阵 我怎么能这样做呢 我当前的解决方案有点丑陋 for n 1 length mat 3 out n 1 3 mat n 1 3 1 n 1 3 3 end 有一个更好的方法吗 r
  • JSF:使用 ajax 清除 inputTextArea 时出现奇怪的行为

    这是我所拥有的
  • 点击链接后如何导航回来?

    我对在 vba 中使用 IE 还很陌生 所以有时我很难纠正在编写从网络上抓取数据的代码时所犯的任何错误 我编写了一些代码来单击标题下 20 个链接中的每个视频链接Microsoft computer training videos可以在它的
  • 在硒自动化中,鼠标箭头移动是否可以用于测试用例

    我是硒的新手 我想知道如何向用户显示鼠标箭头移动 我的意思是说我们自动化某些事情 我想知道如何向用户显示鼠标箭头移动看到硒中正在进行的自动化 是否可以 我们能否清楚地显示正在单击的内容 我的意思是通过鼠标箭头移动单击了哪个按钮 我希望我很清
  • 更改为服务器端后如何获取标签文本?

    我试图在不回发时将标签的文本分配给隐藏字段 但失败了 这就是我所做的 If Not IsPostBack Then Dim structPayperiod As strcPayperiodDet structPayperiod objTim
  • 使用 ddply 进行汇总统计

    我喜欢使用编写一个函数ddply根据两列的名称输出汇总统计信息data frame mat mat是一个大data frame与列的名称 metric length species tree index index是具有 2 个水平的因子
  • 如何在 jQuery UI 中将多个可排序列表相互连接?

    我是 jQuery 新手 并且在使用 jQuery UI 时遇到了很大的困难sortable 我正在尝试整理一个页面以方便对项目进行分组和排序 我的页面有一个组列表 每个组都包含一个项目列表 我希望允许用户能够执行以下操作 重新排序组 对组
  • 在不知道键的情况下快速引用字典键和值

    我有一个字典数组定义为 var users String String 数组内的字典是一个简单的用户名 是 否标志 第一个用户 Y 第二个用户 N 第三个用户 N 在我的 TableView 单元格配置中 我定义了 let userReco
  • 浏览器和服务器在实践中是否使用 HTTP 内容协商?

    我正在学习关于HTTP内容协商 https developer mozilla org en US docs Web HTTP Content negotiation眼下 我已经了解客户端和服务器能够协商所请求内容的表示的基本方式 但我不知
  • 热点 JVM 字节码解释器是跟踪 JIT 吗?

    这个问题几乎说明了一切 我一直在寻找答案 甚至通过 VM 规范 但我没有明确说明 No 不过 还有一些其他 JVM 具有跟踪 JIT HotPath http HotPath GoogleCode Com and Maxine http L
  • 通过 jQuery tiny PubSub 传递数组

    jQuery 微型 PubSub https gist github com 661855在传递原始值或对象时非常有用 但在传递数组时会遇到一些问题 所以我必须将数组包装成一个对象 function var o subscribe func
  • JTable TableCellRenderer背景与Nimbus LookAndFeel颜色问题

    我正在使用 NimbusLookAndFeel 通过这种外观和感觉 JTable 的单元格背景可以是白色和浅灰色 这取决于行号 现在 我正在编写一些实现 TableCellRenderer 的自定义单元格渲染器 我需要根据 JTable 中
  • PHP 循环遍历表单值

    我有一个表单 提交了许多小字段 我需要循环遍历这些字段并对其执行操作 表格如下所示
  • 在 GoogleTest 中使用 ASSERT 和 EXPECT

    当 ASSERT 宏导致测试用例终止时 EXPECT 宏继续其评估 我想知道决定是否使用其中之一的标准是什么 Use ASSERT当条件must保持 如果没有 测试就在那里停止 当测试的其余部分在不满足此条件的情况下不具有语义意义时 请使用
  • 在使用 libstdc++ 进行调试期间强制使用 std::atomic 内部的锁

    我用谷歌搜索了一下 似乎找不到GCC选项或libstdc 库宏为此 是否可以强制在所有的内部使用锁定std atomic模板专业化 在某些平台上 某些专业化无论如何都会锁定 因此这似乎是一个可行的选择 过去我发现使用std atomic使用