可移植的比较和交换(原子操作)C/C++ 库?

2024-01-10

是否有任何小型库,可以将各种处理器的类似 CAS 的操作包装成可跨多个编译器移植的宏或函数?

PS. The 原子.hpp库 http://www.boost.org/doc/libs/1_39_0/boost/interprocess/detail/atomic.hpp位于 boost::interprocess::detail 命名空间内。作者拒绝将其打造成一个维护良好的公共图书馆。

让我们重新提出这个问题,看看还有其他选择吗?


OPA(开放便携式原子)可能非常适合您的需求。https://trac.mcs.anl.gov/projects/openpa/ https://trac.mcs.anl.gov/projects/openpa/

它在 MIT 风格的许可下为跨多个平台的常见原子操作提供一致的 C API。图书馆很小,当然可以满足您的大小要求。目前平台列表为:

  • 适用于 x86、x86_64、ia64、PPC 440 和 MIPS 5K 处理器的 GCC 内联汇编。相同的体系结构还支持多个具有 GCC 兼容前端的编译器,例如 icc、PGI 和 IBM 的 xlc。
  • GCC 原子内在函数,因此支持大多数 GCC-4.1+ 安装。
  • SUN Solaris 原子操作库。
  • Windows NT 内在函数(尽管目前您必须做一些额外的工作才能在 Windows 上进行构建)。
  • 两个伪平台,基于 pthread 互斥体的模拟,可移植到其他不支持的平台(同时牺牲一些性能),以及用于有条件编译为单线程代码的代码中的“不安全”实现。

我从未在 C++ 程序中使用过它,尽管它应该只需很少的更改或无需更改即可工作。如果您遇到麻烦,我很乐意调整它(只需邮寄[电子邮件受保护] /cdn-cgi/l/email-protection).

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

可移植的比较和交换(原子操作)C/C++ 库? 的相关文章

随机推荐

  • Kubernetes 无法从 docker hub 存储库中提取镜像

    大家好希望你们一切顺利 我需要我的主机命令从机从我的 docker hub 存储库中拉取映像 我收到以下错误 它不会让从机从存储库中拉取 但是当我转到从机时 手动拉动他拉动 来自 kubernetes master 的 第一行是来自 pod
  • HTML/JS 打开一个到 C$ 驱动器的窗口

    我需要在我的应用程序中有一个链接 用于打开特定计算机的远程 C 驱动器窗口 例如 这有效 a href Connect to C a 但是 我需要用一段 JS 代码来完成它 所以我想做这样的事情 function raiseQueryDia
  • Android ImageReader 获取 NV21 格式?

    我没有成像或图形方面的背景 所以请耐心等待 我在用JavaCV https github com bytedeco javacv在我的一个项目中 在里面examples https github com bytedeco javacv bl
  • 使用未显式实例化的 VBA 用户表单

    假设我有一个名为MyUserForm我用的像 Dim form as MyUserForm Set form New MyUserForm form SomeVar Hi form Show Displays Hi somewhere on
  • gdb 漂亮打印不起作用

    我正在尝试查看 C STL 容器的内容 我读here https stackoverflow com a 10994050 2627729最新版本的 gcc 和 gdb 默认支持漂亮的打印 但是当我尝试显示地图时 我得到以下信息 然后 我尝
  • 如何调试 cordova 混合应用程序

    因此 我在远程设备上运行了 cordova 应用程序 并且我正在尝试测试扫描仪 因此必须在 Android 设备本身上进行测试 但我不知道应该如何检查它抛出的错误 因为扫描仪在我的移动设备上无法工作 任何帮助将不胜感激 Thanks 调试
  • 如何在使用 React Native 时实现 SSL 证书固定

    我需要在我的 React Native 应用程序中实现 SSL 证书固定 我对 SSL TLS 知之甚少 更不用说固定了 我也不是本地移动开发人员 尽管我了解 Java 并在这个项目上学习了 Objective C 足以应付 我开始寻找如何
  • 如何通过用户脚本抓取 HTML 表格内容?

    我正在创建一个 Greasemonkey 脚本 该脚本读取基于文本的游戏中的信息并将其存储到数据库中以供将来使用 我想要的是能够读取用户的统计信息并将这些统计信息转换为变量 以便我可以继续使信息变得有用 这是我想从中获取统计信息的表的源代码
  • Gulp 角度单元测试指令 templateUrl

    我在互联网上阅读了很多帖子 但找不到任何有效的解决方案 我正在尝试为指令编写单元测试 并希望从模板缓存提供 html 文件 我使用 Gulp 作为构建工具 测试的 gulp 任务看起来像这样 gulp task test function
  • “其中 T :某个值”是什么意思?

    什么是where T somevalue意思是 我刚刚看到一些代码说where T Attribute 我认为这与泛型有关 但我不确定这意味着什么或它在做什么 有人知道吗 It is a 对类型参数的约束 http msdn microso
  • 当我调用数组中对象的属性时出现错误

    在打字稿代码中 我有一个包含对象的数组 当我调用 getUsers users 函数时 它会根据需要返回结果 但在控制台中我收到此错误 未捕获类型错误 无法读取未定义的属性 firstName 在 getUsers index js 20
  • Java:最简单的日期减法

    我创建了一个类 其中有两个字段需要是日期 start date and date passed 我一直在研究 java 中日期的最佳方式YYYY MM DD格式允许轻松进行日期减法 并能够 组成 日期 例如将来的日期 我想要它做什么的例子
  • R 中的向量化函数

    我在 R 中有这个数据集 看起来像这样 id sample int 10000 100000 replace TRUE res c 1 0 results sample res 100000 replace TRUE date exam t
  • SQLite DB 的 MIDP Java 实现

    是否有任何 SQLite db 的 MIDP 实现可用于在 MIDlet 中使用 sqlite db 而不是使用 RMS 当然 还有Floggy http floggy sourceforge net and OpenBaseMovil h
  • Gradle jacoco 代码覆盖率 - 然后在 Jenkins 中发布/显示

    我正在尝试为 Java 应用程序项目设置代码覆盖率 项目名称 新应用 项目结构 src java 源代码 src java test 单元测试 Junit 测试 it 测试 集成测试 测试 测试 验收测试 tomcat 包含tomcat启动
  • 在 wwwroot 之外提供静态文件,但在目录不存在时处理 PhysicalFileProvider

    我正在尝试从外部提供文件wwwroot还可以处理目录可能尚不存在的设置情况 例如 如果我构建了一个依赖于该目录的站点 但用户没有遵循安装说明并首先创建该目录 为了便于讨论 让我们假设我想要一个简单的网站 其中有一个页面可以读取该目录的内容并
  • 通过 ajax 调用 CouchDB 时得到空响应

    我是 CouchDB 的新手 所以请耐心等待 我有一个在虚拟机上运行的 CouchDB 实例 我可以通过浏览器通过蒲团或直接访问它 http 192 168 62 128 5984 articles hot dog 在浏览器中调用该 URL
  • Android 以编程方式关闭 Activity

    活动中与离开屏幕等效的操作是什么 就像当您按下后退按钮时 活动就会消失 如何从活动内部调用它以使其自行关闭 关于Activity finish http developer android com reference android app
  • java.lang.NoClassDefFoundError:com.dropbox.sync.android.DbxAccountManager

    请这不是重复的问题 不知道 但我已经将 jar 放入 libs 文件夹中 并且还完成了以下过程 And also 我已经检查过这个我收到 java lang classnotfoundException com mysql jdbc Dri
  • 可移植的比较和交换(原子操作)C/C++ 库?

    是否有任何小型库 可以将各种处理器的类似 CAS 的操作包装成可跨多个编译器移植的宏或函数 PS The 原子 hpp库 http www boost org doc libs 1 39 0 boost interprocess detai