我即将在 iOS 的 Objective-C 中为原子属性实现自定义 getter 和 setter。我不确定复制基元类型(如 char、short、int、long、long long、float、double、long double
)是否保证在 iOS 平台和 ARM 架构上是原子的。
分配给变量或从方法原子操作返回时是否复制原始值?
最佳答案
如果 iOS 设备在 32 位 ARM 架构上运行,那么任何 64 位访问都不是原子的。
这使得 long long
和 double
访问在 32 位 ARM 设备上不是原子的。
Afaik Objective-C 不支持 long double
类型。
您可以比较 Linux 对 ARM 架构的原子实现以获得更多信息和想法:
https://github.com/torvalds/linux/blob/master/arch/arm/include/asm/atomic.h
https://github.com/torvalds/linux/blob/master/arch/arm64/include/asm/atomic.h
关于ios - 在 iOS 上复制原始类型是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25363414/