JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:C++ 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分C++ 编译器

1.  C++ 编译器

2.  使用 C++ 编译器

3.  使用 C++ 编译器选项

第 2 部分编写 C++ 程序

4.  语言扩展

4.1 链接程序作用域

4.1.1 与 Microsoft Windows 兼容

4.2 线程局部存储

4.3 用限制较少的虚函数覆盖

4.4 对 enum 类型和变量进行前向声明

4.5 使用不完整 enum 类型

4.6 将 enum 名称作为作用域限定符

4.7 使用匿名 struct 声明

4.8 传递匿名类实例的地址

4.9 将静态名称空间作用域函数声明为类友元

4.10 将预定义 __func__ 符号用于函数名

4.11 支持的属性

4.11.1 __packed__ 属性详细信息

4.12 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream

14.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

4.2 线程局部存储

通过声明线程局部变量,可以利用线程局部存储。线程局部变量声明普通变量声明与声明说明符 __thread 组成。有关更多信息,请参见A.2.174 -xthreadvar[= o]

必须将 __thread 说明符包括在第一个线程变量声明中。使用 __thread 说明符声明的变量的绑定方式与没有 __thread 说明符时相同。

只能使用 __thread 说明符声明静态持续时间的变量。具有静态持续时间的变量包括了文件全局、文件静态、函数局部静态和类静态成员。不能使用 __thread 说明符声明动态或自动持续时间的变量。线程变量可以具有静态初始化函数,但是不可以具有动态初始化函数或析构函数。例如,允许 __thread int x = 4;,但不允许 __thread int x = f();。线程变量不能包含具有重要构造函数和析构函数的类型。具体来说,就是线程变量的类型不能为 std::string

运行时对线程变量的地址运算符 (&) 求值并返回当前线程变量的地址。因此,线程变量的地址不是常量。

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