C++ ThreadLocal 如何初始化

c++
小樊
94
2024-07-21 02:26:01

在C++中,可以使用std::thread_local關(guān)鍵字來(lái)聲明一個(gè)線程局部存儲(chǔ)變量。線程局部存儲(chǔ)變量會(huì)為每個(gè)線程創(chuàng)建一個(gè)單獨(dú)的實(shí)例,并且只能在聲明線程內(nèi)部訪問(wèn)。

要初始化一個(gè)線程局部存儲(chǔ)變量,可以使用以下語(yǔ)法:

#include <iostream>
#include <thread>

std::thread_local int thread_local_var = 0;

void thread_func() {
    // 初始化線程局部存儲(chǔ)變量
    thread_local_var = 10;
    
    // 訪問(wèn)線程局部存儲(chǔ)變量
    std::cout << "Thread local variable value: " << thread_local_var << std::endl;
}

int main() {
    // 創(chuàng)建一個(gè)線程
    std::thread t1(thread_func);
    
    // 等待線程結(jié)束
    t1.join();
    
    return 0;
}

在上面的例子中,thread_local_var是一個(gè)線程局部存儲(chǔ)變量,通過(guò)std::thread_local關(guān)鍵字聲明。在thread_func函數(shù)內(nèi)部,我們對(duì)thread_local_var進(jìn)行初始化,并輸出其值。

需要注意的是,線程局部存儲(chǔ)變量的初始化只會(huì)在每個(gè)線程第一次訪問(wèn)該變量時(shí)進(jìn)行,后續(xù)訪問(wèn)將使用已經(jīng)初始化的值。

0