是否有任何小型库,可以将各种处理器的类似 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(使用前将#替换为@)