C++中两个新的变量生存期说明符

thread_local和mutable。

这个thread_local修饰的是在一个线程中的变量的生存期,一个thread_local变量相对于一个线程来说,有点像一个静态变量相对于整个程序的模式。

在这里介绍个新词叫CV-修饰符(cv-Qualifiers),这个CV分别代表const和volatile。

至于说这个const,我想你已经司空见惯了,但是这个volatile我想有必要解释一下。它说明的是一个变量是可被改变的,即使没有什么代码想去改变它,但是编译器可能会。比如说,一个变量经常被访问,编译器得知此事,它觉得有必要把这个变量放进寄存器中去,于是编译器就去做了。加上这个修饰符以后编译器就不会自动去优化了。

往往有些时候我们不得以会在const常量中去做一些小幅度的修改,因为const就是不允许你修改的意思嘛,那如何去突破这个限制呢?答案就是使用mutable,所以mutable的作用就是去修改const常量中的东西。

你可能感兴趣的:(C++中两个新的变量生存期说明符)