Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

2.3 线程局部存储说明符

通过声明线程局部变量,可以利用线程局部存储。 线程局部变量声明由一个标准变量声明外加变量说明符 __thread 组成。有关更多信息,请参见-xthreadvar[=o]

您必须在所编译的源文件中线程变量的第一个声明中包含 __thread 说明符。

在具有静态存储持续时间的对象的声明中,只能使用 __thread 说明符。您可以如初始化任何其他静态存储持续时间的对象一样静态地初始化线程变量。

使用 __thread 说明符声明的变量与不使用 __thread 说明符声明的变量具有相同的链接程序绑定。这包括临时定义,如无初始化函数的声明。

线程变量的地址不是常量。因此,线程变量的地址运算符 (&) 在运行时求值,并返回当前线程的线程变量的地址。结果,静态存储持续时间的对象被动态地初始化为线程变量的地址。

线程变量的地址在相应线程的生命周期中是稳定的。进程中任何线程都可以在线程变量的生命周期任意使用该变量的地址。不能在线程终止后使用线程变量的地址。线程终止后,该线程的变量的所有地址都无效。