我曾读到过,只要原生类型不比内存总线宽且对齐,它们就是原子的。我在这方面可能是非常错误的,但即使对于 32 位 CPU ( http://en.wikipedia.org/wiki/Front-side_bus ),内存总线通常不是 64 位的吗?在哪种情况下,上面的语句意味着读取或写入或对齐的 64 位 native 类型将是原子的,对吧?我查看了英特尔的文档,它说 x86 保证对 32 位及以下的原子是原子的 - 但我想确保我正确理解内存总线宽度部分。
谢谢!
最佳答案
内存总线的宽度与内存访问的原子性无关。您可以拥有一位内存总线,并且通过 64 次读取或写入保持总线仍然具有原子 64 位内存访问。如果 CPU 和高速缓存之间的路径是 32 位并且无法锁定高速缓存,则您可能拥有 64 位总线但不是原子 64 位内存访问。
关于c - 64 位 native 类型原子性和内存总线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388221/