gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:44:04 26 4
gpt4 key购买 nike

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

PS。 atomic.hpp library在 boost::interprocess::detail 命名空间内。作者拒绝让它成为一个公共(public)的、维护良好的图书馆。

让我们重新打开问题,看看是否还有其他选择?

最佳答案

OPA(开放可移植原子)可能非常适合您的需求。 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++ 程序中使用过它,尽管它应该可以在很少或根本没有变化的情况下工作。如果您遇到麻烦,我很乐意对其进行调整(只需发送邮件 opa-discuss@lists.mcs.anl.gov)。

关于c++ - 可移植比较和交换(原子操作)C/C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com