volatile关键字在C语言中的具体应用和常见误区有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4367个文字,预计阅读时间需要18分钟。
volatile关键字用于修饰变量,确保其在多线程环境中的可见性和有序性。在C/C++中,volatile与const相对,const用于修饰常量,保证变量不可修改。volatile主要用于以下场景:
1. 内存屏障:在建立语言级别的内存屏障,确保指令重排不会影响到volatile变量的读取和写入。
2.多线程同步:在多线程编程中,volatile关键字可以防止编译器优化,保证变量的修改对其他线程立即可见。
这是《C++程序设计语言》中对volatile修饰符的解释:A volatile spec
为什么使用volatile ?
C/C++中的 volatile 关键字 和const对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是BS在“The C++ Programming Language”对volatile修饰词的解释:
A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.
volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统,硬件或者其他线程等。
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
本文共计4367个文字,预计阅读时间需要18分钟。
volatile关键字用于修饰变量,确保其在多线程环境中的可见性和有序性。在C/C++中,volatile与const相对,const用于修饰常量,保证变量不可修改。volatile主要用于以下场景:
1. 内存屏障:在建立语言级别的内存屏障,确保指令重排不会影响到volatile变量的读取和写入。
2.多线程同步:在多线程编程中,volatile关键字可以防止编译器优化,保证变量的修改对其他线程立即可见。
这是《C++程序设计语言》中对volatile修饰符的解释:A volatile spec
为什么使用volatile ?
C/C++中的 volatile 关键字 和const对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是BS在“The C++ Programming Language”对volatile修饰词的解释:
A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided.
volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统,硬件或者其他线程等。
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

