Using __thread in c++0x
我读到C++中有一个新的关键词:从我读到的,它是EDCOX1,0。
我只知道它是一个关键字,可以像
1 | __thread int foo; |
那么,与该变量有关的任何事情都将用一个新线程执行?
型
是
EDCOX1·0是一个新的存储期限说明符,它在C++0x中被添加,还有其他的存储持续时间:静态、自动和动态。
通过此链接:
thread local storage duration (C++11 feature). The variable is allocated when the thread begins and deallocated when the thread ends. Each thread has its own instance of the variable. Only variables declared thread_local have this storage duration.
号
我认为通过在C++ 0x中引入标准化内存模型来引入这个关键字是可能的:
- 百万千克1C++ 11引入了标准化内存模型。这是什么意思?它会如何影响C++程序设计?百万千克1
型
型
来自维基百科关于"线程本地存储"的文章:
Thread-local storage (TLS) is a computer programming method that uses
static or global memory local to a thread.This is sometimes needed because normally all threads in a process
share the same address space, which is sometimes undesirable.
号
以及:
C++0x introduces the
thread_local keyword. Aside that, various C++
compiler implementations provide specific ways to declare thread-local
variables:Sun Studio C/C++, IBM XL C/C++, GNU C and Intel C/C++ (Linux systems) use the syntax:
1 __thread int number;Visual C++, Intel C/C++ (Windows systems), Borland C++ Builder and Digital Mars C++ use the syntax:
1 __declspec(thread) int number;Borland C++ Builder also supports the syntax:
1 int __thread number;
号
因此,虽然
当您访问C++ 0x时,更喜欢使用非标准EDCOX1 2。
型
关键字称为
型
不,这并不意味着"与该变量有关的任何事情都将用新线程执行"。这意味着存在的每个线程都将有一个变量的副本,并且每个线程只能看到自己的变量副本。