volatile关键字
今天一个人问我
volatile int i = 10;
什么意思。我只知道关于编译器的优化方面别的还不知道,他让我回去Baidu。基本上明白了,但是想找个例子,大家有什么好例子,用volatile和不用volatile的
[解决办法]
volatile的作用楼主查过,我就不解释了
某些人说volatile基本没什么能直接使用的情况,这是有道理
比如,对于一般的内置整数类型,操作系统和一些程序库都会直接提供原子操作的api,这种原子操作效率比你自己加锁要高,而他们的传入参数一般是volatile,所以无论你传进去的是不是volatile,都会按照volatile处理,通常没有自己写volatile的必要。
Linux内核文档的编程规范有类似的观点,不提倡使用volatile,具体的描述和理由,你可以下个内核源码看看,里面Document目录下就有编程规范,而且还有中文的版本
所以,目前为止,虽然写过一些很复杂的多线程程序,但从没有手动声明过volatile变量
[解决办法]
我觉得这篇博客里例子不错:
http://blog.21ic.com/user1/2949/archives/2007/35599.html
volatile还是在嵌入式中用的多一些。
[解决办法]
只在《C和指针》里看到过,没用过,所以已经又还给书了
[解决办法]
4#说的不错,这个说明符一般就是在多线程时当做一个标志来用的,但仍不是线程安全的,要加锁
[解决办法]
不加的话有可能读到脏数据吧。
[解决办法]
[解决办法]
volatile最常见的含义是:volatile所修饰的变量,使用时都要从内存中获取,而不能让CPU偷懒(当然前提是编译器做了这样的优化,CPU不会擅自作主)去寄存器里面拿,保证任何线程所用到的值都是最新的。