我目前正在将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。”

更多阅读: http://en.wikipedia.org/wiki/memory_ordering

http://rsim.cs.illinois.edu/pubs/10-cacm-memory-models.pdf

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top