社区
C语言
帖子详情
初学者关于volatile的疑问!
banking
2003-05-04 11:47:09
究竟c++中volatile修饰符的用法是什么?
可以给个实用的例子我吗?
...全文
19
5
打赏
收藏
初学者关于volatile的疑问!
究竟c++中volatile修饰符的用法是什么? 可以给个实用的例子我吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
banking
2003-05-05
打赏
举报
回复
哦,实在太谢谢两位. 特别是fullsail(远航)竟然解释的如此详细。
我都看懂了。
再次谢谢你们。
csdn有象你们一样的成员真是福气!真心话。
fullsail
2003-05-05
打赏
举报
回复
The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread.
一个告诉编译器,不要对这个变量进行优化的修饰符号。比如在一个变量和串口向关联,串口变化时,这个变量会改变,但如果编译器优化了,把这个放到寄存器中去了,这时候变量改变了,程序还以为值是寄存器中的值,这就会有问题。
同样这样的问题也存在多线程中,比如thread1 ,thread2,同时访问一个变量
int nVint;
如果编译是编译器进行了优化,在thread1 使用nVint是将变量放入了寄存器中去了,这是如果thread2要使用 nVint变量,thread2实际上就不知道nVint的真正值。
所以你要这样告诉编译器,不要优化。
int volatile nVint;
对几种情况你要考虑这个关键值:
1、多任务,线程环境。
2、存储器映射的硬件的寄存器、
Appla
2003-05-05
打赏
举报
回复
volatile表示被修饰的变量,可能被其他线程等或操作系统修改,这个涉及到优化的问题。特别在多线程编程采用共享数据的方法通讯方面有用。
example:
int volatile i;
banking
2003-05-05
打赏
举报
回复
ok!希望大家都好运.明天会更好.(土)
fullsail
2003-05-05
打赏
举报
回复
不用,兄弟,多看MSDN,就是要学点英文。可惜我自己当年英语没有学好,如果英语好,很多事情网上都有答案,而且全面。祝好运。
volatile
与JMM的那些恩怨情仇
当然,
初学者
对于这些特性多数只能做到死记硬背,应付面试。工作中对于其真正的原理及实现方式,可能甚至还达不到一知半解。而若要对
volatile
的原理娓娓道来,需要先引入它的老冤家JMM了。 二、JMM JMM(Java ...
Volatile
原理分析
1、引言在多线程并发编程中synchronized和
Volatile
都扮演着重要的角色,
Volatile
是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个...
java
volatile
理解
refer to ... 谈谈自己对
volatile
的理解。 先eg i = 10 ; i ++ ; I++的操作 实际在机器码层面 分为三个步骤 refer to http://www.cnblogs.com/aigongsi/archive/201
volatile
学习
volatile
在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。其实现原则为: 将当前处理器缓存行的数据写回系统内存; 其他处理器缓存...
Java并发编程:
volatile
关键字解析
Java并发编程:
volatile
关键字解析 本文重点摘要: 一、在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。 二、1、一旦一个共享变量(类的成员变量、类的静态成员变量)被
volatile
...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章