博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
volatile
阅读量:4295 次
发布时间:2019-05-27

本文共 291 字,大约阅读时间需要 1 分钟。

在多线程中,一个互斥锁包含了内存屏障来确保加载和存储操作是按照正确顺序的。但是,这并不表示没有问题。因为编译器在优化代码时,可能会将变量加载到寄存器中,以便提升性能。此时,如果该变量时对其他线程可见的,那么这种优化会导致该变量在寄存器中的变化不被其他线程获知。

反之亦然,如果变量随时会被编译器无法检测到的外部源修改,那么这种优化亦是不被提倡的,所以可以使用关键字 volatile 修饰重要变量,告知编译器不要对其进行优化。

需要注意的是关键字 volatile 只是确保每次从内存加载该变量而不是使用寄存器中的缓存值,它并不保证代码访问的该变量是逻辑正确的。

详细介绍可以参见:

转载地址:http://fvdws.baihongyu.com/

你可能感兴趣的文章
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
常浏览的博客和网站
查看>>
Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
查看>>
点击button实现Storyboard中TabBar Controller的tab切换
查看>>
Xcode 的正确打开方式——Debugging
查看>>
打包app出现的一个问题
查看>>
iOS在Xcode6中怎么创建OC category文件
查看>>
Expanding User-Defined Runtime Attributes in Xcode with Objective-C
查看>>
iOS7 UITabBar自定义选中图片显示为默认蓝色的Bug
查看>>
提升UITableView性能-复杂页面的优化
查看>>
25 iOS App Performance Tips & Tricks
查看>>