volatile和mutable关键字有何具体应用区别?

2026-04-29 16:572阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1697个文字,预计阅读时间需要7分钟。

volatile和mutable关键字有何具体应用区别?

C++中volatile关键字与const对应,用于修饰变量,告知编译器变量值可能随时改变,不可优化。使用volatile注意项:1. 编译器会禁止对包含volatile关键字的变量进行优化(如A+volatile)。

C/C++中的volatile关键字和const对应,用来修饰变量,用于告诉编译器该变量值是不稳定的,可能被更改。使用volatile注意事项:

(1). 编译器会对带有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)。

(2). 当多个线程都要用到某一个变量且该变量的值会被改变时应该用volatile声明,该关键字的作用是防止编译器优化把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么多个线程有可能有的使用内存中的变量,有的使用寄存器中的变量,这会造成程序的错误执行。volatile的意思是让编译器每次操作该变量时一定要从内存中取出,而不是使用已经存在寄存器中的值(It cannot cache the variables in register)。

(3). 中断服务程序中访问到的变量最好带上volatile。

阅读全文

本文共计1697个文字,预计阅读时间需要7分钟。

volatile和mutable关键字有何具体应用区别?

C++中volatile关键字与const对应,用于修饰变量,告知编译器变量值可能随时改变,不可优化。使用volatile注意项:1. 编译器会禁止对包含volatile关键字的变量进行优化(如A+volatile)。

C/C++中的volatile关键字和const对应,用来修饰变量,用于告诉编译器该变量值是不稳定的,可能被更改。使用volatile注意事项:

(1). 编译器会对带有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)。

(2). 当多个线程都要用到某一个变量且该变量的值会被改变时应该用volatile声明,该关键字的作用是防止编译器优化把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么多个线程有可能有的使用内存中的变量,有的使用寄存器中的变量,这会造成程序的错误执行。volatile的意思是让编译器每次操作该变量时一定要从内存中取出,而不是使用已经存在寄存器中的值(It cannot cache the variables in register)。

(3). 中断服务程序中访问到的变量最好带上volatile。

阅读全文