澄清不同OSS的原子记忆访问
-
09-10-2019 - |
题
我目前正在将Windows C ++库移植到MacOS,作为一个学习体验的业余爱好项目。我使用WIN互锁*函数偶然发现了一些代码,因此我一直在尝试阅读该主题。
在这里阅读相关的问题,我知道有不同的方法可以根据操作系统进行这些操作。在Windows中互锁*,MacOS中的Osatomic*,我还发现编译器对此具有内置(内在的)操作。
看完之后 GCC内置原子记忆访问, ,我不知道 固有*或互锁*的固有性和固有性之间有什么区别? 我的意思是,如果我在使用GCC时,我可以在MacOS上使用Osatomic*或GCC内置吗?如果我使用GCC在Windows上也是如此。
我还读到,在Windows互锁*上*均为内联版本和内在版本。 在内在或内联选择之间选择什么?
通常,OSS上是否有多种选择? 还是再次“取决于”?如果是这样,它取决于什么?
谢谢!
解决方案
真正的问题是。
我们都知道和爱的英特尔芯片组没有明确定义的记忆订单。
英特尔®64建筑记忆订购白皮书. 。本文档提供了仔细定义内存写入排序的尝试。
该文档已合并为Intel 64和IA-32架构软件开发人员手册的第3A卷。
Intel®64和IA-32体系结构软件开发人员手册3A:系统编程指南第1部分 这是对该文档的修订。
http://www.intel.com/products/processor/manuals/
由于芯片本身不能保证特定的内存写订单,因此它留给了操作系统以确保一致性。
“它取决于”是“它取决于您要构建软件的操作系统中的API。”
不隶属于 StackOverflow