ios - 解决iOS ARM弱内存写排序的内存障碍?

标签 ios objective-c swift memory multiprocessing

据报道,iOS 设备中的 ARM 处理器不会强制执行内存写入的顺序。这意味着如果一个处理器写入数据结构或数组然后更新有效标志,则另一个处理器可以在数据到达内存之前看到更新的有效标志,从而读取垃圾。即使标志变量很小(原子大小)并且声明为 volatile,也是如此。

是否有任何方法(在 Swift 或 Objective C 中)告诉 Xcode 编译一些 ARM 内存屏障指令、内在函数或等效调用,以保证数据写入内存(对同一芯片上的其他处理器可见) ) 在发布后续有效标志更新之前?

这适用于不允许在实时回调中锁定的实时代码。

最佳答案

查看 libkern/OSAtomic.h,它应该包含您需要的一切。

或者查看最新的 C 和 C++ 标准支持;这也适用于 iOS。

关于ios - 解决iOS ARM弱内存写排序的内存障碍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985202/

相关文章:

ios - 在 WKInterfaceTable 的选择行上将数据传输到 Iphone

python - 来自 Socket.IO-Client-Swift 的 Socket.io POST 请求

objective-c - 重写为 NSDocument 加载多个文件的方法

arrays - 如何创建元组数组?

ios - 如何根据 iOS/swift 中当前位置的方位/航向值绘制一条线?

Swift - CollectionView,如何查找 IndexPath 中的第一个和最后一个项目?

ios - 来自 Facebook Graph API 的 Soundcloud 点赞

iOS AFNetworking GET/POST 参数

java - 将 bytearray 转换为 Objective-C 数据结构

iphone - 适用于 iOS < 5.0 的 UINavigationBar 上的自定义图像