我目前正在将一个 Windows C++ 库作为一个爱好项目移植到 MacOS,作为一种学习体验。我偶然发现了一些使用 Win Interlocked* 函数的代码,因此我一直在尝试阅读这个主题。
在 SO 中阅读相关问题,我了解根据操作系统有不同的方法来执行这些操作。Windows 中的 Interlocked*,MacOS 中的 OSAtomic*,我还发现编译器对此具有内置(内在)操作。
在阅读gcc builtin atomic memory access之后,我想知道内在和 OSAtomic* 或 Interlocked* 之间有什么区别?我的意思是,如果我在 MacOS 上使用 gcc 时,我不能在 OSAtomic* 或 gcc 内置之间进行选择吗?如果我在 Windows 上使用 gcc 也是一样。
我还在 Windows Interlocked* 上读到了内联版本和内在版本。在内部或内联之间进行选择时要考虑什么?
一般来说,操作系统上有多个选项可以使用什么?还是这又是“取决于”?如果是这样,它取决于什么?
谢谢!