c 執行緒週期關鍵字thread local

2021-10-06 02:27:32 字數 1052 閱讀 8653

那麼,哪些變數可以被宣告為thread_local?以下3類都是ok的

命名空間下的全域性變數

類的static成員變數

本地變數

下面引用《c++ concurrency in action》書中的例子來說明這3種情況:

namespace loacl

classx;

static

thread_local std::string x::s;

//the definition of x::s is required

void

foo(

)

#include

thread_local

int g_n =1;

//宣告乙個thread執行緒週期變數 g_n,很重要這個是宣告,不是定義

voidf(

)void

foo(

)voidf2(

)int

main()

輸出(id值是每次執行時變的):

id=

8004

, n=

3//主線程

id=8008

, n=

2//t1執行緒,這裡說明,t1執行緒中g_n 不是主線程中的g_n 是t1執行緒自己的。

id=8012

, n=

2id=

8004

, n=

0id=

8004

, n=

1id=

8016

, n=

0id=

8016

, n=

1id=

8020

, n=

0id=

8020

, n=

1

附加乙個,儲存宣告宣告表, 塊表示區域性變數,

執行緒同步C 關鍵字 lock,monitor

詳細文章 c 執行緒同步 詳解lock,monitor,同步事件和等待控制代碼以及mutex 鎖是相對單獨的資源而言的。鎖住當前例項 lock this 鎖住此類的所有例項 lock typeof type 對字串的鎖,會鎖定所有相同內容的字串,建議可以用靜態字串代替 對一些集合類一般操作都是執行緒...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

this關鍵字 static關鍵字

1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...