第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C ++ 11中thread_local是什么意思?

在C ++ 11中thread_local是什么意思?

C++
尚方寶劍之說 2019-11-07 12:45:00
我對thread_localC ++ 11中的描述感到困惑。我的理解是,每個線程在函數(shù)中都有局部變量的唯一副本。全局/靜態(tài)變量可以被所有線程訪問(可能使用鎖進(jìn)行同步訪問)。而且thread_local變量對所有線程都是可見的,但是只能由為其定義的線程修改?這是正確的嗎?
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

線程本地存儲在各個方面都像靜態(tài)(=全局)存儲一樣,只是每個線程都具有對象的單獨副本。對象的生命周期從線程啟動(對于全局變量)或首次初始化(對于塊局部靜態(tài)變量)開始,并在線程結(jié)束(即,何時join()調(diào)用)時結(jié)束。


因此,只能將也可以聲明的變量static聲明為thread_local,即全局變量(更確切地說:“在命名空間范圍內(nèi)”的變量),靜態(tài)類成員和塊靜態(tài)變量(在這種情況下static隱含)。


例如,假設(shè)您有一個線程池,并且想知道您的工作負(fù)載平衡得如何:


thread_local Counter c;


void do_work()

{

    c.increment();

    // ...

}


int main()

{

    std::thread t(do_work);   // your thread-pool would go here

    t.join();

}

這將打印線程使用情況統(tǒng)計信息,例如使用以下實現(xiàn):


struct Counter

{

     unsigned int c = 0;

     void increment() { ++c; }

     ~Counter()

     {

         std::cout << "Thread #" << std::this_thread::id() << " was called "

                   << c << " times" << std::endl;

     }

};


查看完整回答
反對 回復(fù) 2019-11-07
  • 3 回答
  • 0 關(guān)注
  • 645 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號