``` __thread ```
时间: 2024-03-22 09:35:49 浏览: 14
`__thread`是一个线程局部存储(Thread Local Storage,TLS)的关键字。它用于声明一个变量,使得每个线程都有自己的独立副本,而不是共享一个全局变量。
在多线程编程中,如果多个线程同时访问同一个全局变量,可能会导致数据竞争和不确定的结果。为了避免这种情况,可以使用`__thread`关键字声明一个变量,使得每个线程都有自己的副本。
使用`__thread`关键字声明的变量只能是基本数据类型(如整型、浮点型等)或者指针类型。它可以在全局作用域、函数内部或者类的成员变量中使用。
下面是一个示例代码:
```cpp
#include <iostream>
#include <thread>
__thread int thread_local_var = 0;
void thread_func() {
thread_local_var++;
std::cout << "Thread local variable: " << thread_local_var << std::endl;
}
int main() {
std::thread t1(thread_func);
std::thread t2(thread_func);
t1.join();
t2.join();
return 0;
}
```
在上面的代码中,我们使用`__thread`关键字声明了一个整型变量`thread_local_var`。在`thread_func`函数中,每个线程都会对该变量进行自增操作,并输出结果。由于每个线程都有自己的副本,所以输出结果会分别是1和1,而不是2和2。
需要注意的是,`__thread`关键字只能用于线程局部存储,不能用于进程间共享的全局变量。如果需要在多个线程之间共享数据,可以使用其他的线程同步机制,如互斥锁、条件变量等。