luc*_*kyl 15 c++ multithreading c++11
我读到C++中有一个新关键字:它__thread
来自我读过的内容.
我所知道的是,它是一个像static
关键字一样使用的关键字,但我什么都不知道.这个关键字是否仅仅意味着,例如,如果变量被声明为:
__thread int foo;
Run Code Online (Sandbox Code Playgroud)
然后用新线程执行与该变量有关的任何事情?
Naw*_*waz 25
这thread_local
,不是__thread
.它用于定义具有线程存储持续时间的变量.
thread_local
是在C++ 0x中添加的新存储持续时间说明符.还有其他存储持续时间: 静态,自动和动态.
从这个链接:
线程本地存储持续时间(C++ 11特性).线程开始时分配变量,线程结束时分配变量.每个线程都有自己的变量实例.只有声明为thread_local的变量才具有此存储持续时间.
我认为通过在C++ 0x中引入标准化内存模型可以实现这个关键字的引入:
Lig*_*ica 21
线程局部存储(TLS)是一种计算机编程方法,它使用线程本地的静态或全局内存.
有时需要这样做,因为通常进程中的所有线程共享相同的地址空间,这有时是不合需要的.
和:
C++ 0x引入了
thread_local
关键字.除此之外,各种C++编译器实现提供了声明线程局部变量的特定方法:Sun Studio C/C++,IBM XL C/C++,GNU C和Intel C/C++(Linux系统)使用以下语法:
Run Code Online (Sandbox Code Playgroud)__thread int number;
Visual C++,Intel C/C++(Windows系统),Borland C++ Builder和Digital Mars C++使用以下语法:
Run Code Online (Sandbox Code Playgroud)__declspec(thread) int number;
Borland C++ Builder还支持以下语法:
Run Code Online (Sandbox Code Playgroud)int __thread number;
因此,虽然在实践和某些系统中__thread
确实存在,thread_local
但是新的官方C++ 0x关键字也能做同样的事情.
__thread
无论何时访问C++ 0x,都希望它是非标准的.
归档时间: |
|
查看次数: |
12621 次 |
最近记录: |