volatile的用法
来源:互联网 发布:淘宝上直播代购靠谱么 编辑:程序博客网 时间:2024/06/16 06:05
volatile的本意是“易变的”
由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:
程序的本意是希望ISR_2中断产生时,在main当中调用dosomething函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致dosomething永远也不会被调用。如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。
- volatile的用法
- volatile的用法
- volatile的用法。。
- volatile的用法
- volatile的用法(一)
- volatile的用法
- volatile的用法
- volatile的用法
- volatile的用法
- volatile的用法
- volatile关键字的用法
- 了解 volatile 的用法
- volatile的用法
- volatile的用法
- 关键字volatile的用法
- volatile的用法
- VOLATILE的用法
- volatile的用法
- 奶牛梦工厂介绍-“生鲜奶”的质量规定将进一步严格
- 奶牛梦工厂赞同:高标准保障高品质
- 又一次被病毒袭击了——又是在我最忙碌的时刻
- FCKeditor,API,javascript,文本,值,内容(转)
- java学习资料
- volatile的用法
- 几行代码帮您实现Win7窗体的打开效果(C#)
- 生成随机年份日期
- PostgreSQL数据库中的常见错误
- findbugs 插件
- 来到大工的岁月
- 嵌入式Linux高级班
- Collections Framework
- 我想生成随机长度的随机字符串可是不行 不知道为什么 先记下了