适用于 64 位 Linux 的 Oracle (Sun) Studio 12.2 C/C++/Fortran 编译器是否具有与 gcc 中提供的 __sync_fetch_and_add 函数等效的功能?我似乎无法在 Sun 文档中找到 intel atomics 的包装代码,也无法在我的 Sun Studio 安装中找到 .h 文件。这意味着要么我不擅长搜索,要么它可能不存在,不确定是哪个。
我碰巧需要使用 Sun C/C++ 编译器访问 intel i7 上可用的任何原子硬件功能,例如 Test-and-set、Compare-and-swap、Fetch-and-foo。
这很复杂,因为我不是汇编程序员,而且这是 Sun 编译器而不是 GCC 编译器,所以从 gcc 的开源实现中复制 asm 代码不一定能工作,最后它是 64 位编译器和硬件,因此很容易找到的 32 位示例不一定能在 64 位系统上正常工作。
背景:目的是实现一些需要这些特定硬件原子的多核并发程序。
谢谢阅读。