【发布时间】:2016-08-27 09:08:58
【问题描述】:
据报道,iOS 设备中的 ARM 处理器不会强制执行内存写入的顺序。这意味着如果一个处理器写入一个数据结构或数组,然后更新一个有效标志,另一个处理器可以在数据到达内存之前看到更新的有效标志,从而读取垃圾。即使标志变量很小(原子大小)并且声明为 volatile,也是如此。
是否有任何方法(在 Swift 或 Objective C 中)告诉 Xcode 在某些 ARM 内存屏障指令、内在函数或等效调用中进行编译,以保证将数据写入内存(对同一芯片上的其他处理器可见) ) 在发出后续有效标志更新之前?
这适用于不允许在实时回调中锁定的实时代码。
【问题讨论】:
标签: ios objective-c swift memory multiprocessing