Sun Studio 12:C 用户指南

B.2.146 -xthreadvar[= o]

指定 -xthreadvar 来控制线程局部变量的实现。将此选项与 __thread 声明说明符结合使用,可利用编译器的线程局部存储功能。用 __thread 说明符声明线程变量之后,请指定 -xthreadvar 启用具有动态(共享)库中与位置无关代码(非 PIC 代码)的线程局部存储。有关如何使用 __thread 的更多信息,请参见2.3 线程局部存储说明符

o 必须为下列值之一:

表 B–40 -xthreadvar 标志

标志 

含义 

[no%]dynamic

[不] 编译动态装入的变量。使用 -xthreadvar=no%dynamic 时对线程变量的访问明显加快,但是不能在动态库中使用目标文件。也就是说,只能在可执行文件中使用目标文件。

如果未指定 -xthreadvar,编译器所用的缺省设置取决于是否启用与位置无关的代码。如果启用了与位置无关的代码,则该选项设置为 -xthreadvar=dynamic。如果禁用了与位置无关的代码,则该选项设置为 -xthreadvar=no%dynamic

如果指定 -xthreadvar,但未指定任何值,则该选项设置为 -xthreadvar=dynamic

如果动态库中存在与位置有关的代码,那么就必须指定 -xthreadvar

链接程序不支持在动态库中与非 PIC 代码等效的线程变量。由于非 PIC 线程变量要快很多,所以应将其用作可执行文件的缺省设置。

在 Solaris 软件的不同版本上使用线程变量需要在命令行中使用不同选项。

另请参见:-xcode-KPIC-Kpic