Oracle Solaris Studio 12.2:C++ 用户指南

A.2.182 -xthreadvar[= o]

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

A.2.182.1 值

o 必须是下列值之一:

表 A–50 -xthreadvar

值  

含义  

[no%]dynamic

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

缺省值

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

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

交互

编译和链接使用 __thread 的文件时,必须使用 -mt 选项。

警告

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

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

另请参见

-xcode-KPIC-Kpic