我即将在iOS上的Objective-C中为原子属性实现自定义getter和setter。我不确定复制基元类型(如char, short, int, long, long long, float, double, long double
)是否保证在iOS平台和ARM架构上是原子的。
在分配变量或从方法原子操作返回时复制原始值吗?
答案 0 :(得分:1)
如果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