首頁  >  文章  >  後端開發  >  thread_local 變數在區塊作用域中是隱式靜態的嗎?

thread_local 變數在區塊作用域中是隱式靜態的嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-02 03:35:02376瀏覽

Are thread_local Variables Implicitly Static in Block Scope?

使用 thread_local 宣告的變數會自動靜態嗎?

下面的程式碼段乍看之下是相同的:

<code class="cpp">void f() {
    thread_local vector<int> V;
    // ...
}

void f() {
    static thread_local vector<int> V;
    // ...
}</code>

然而,C 標準揭示了一個微妙的差異。當定義具有區塊作用域的 thread_local 變數時,如果沒有明確聲明,則隱含靜態儲存類別說明符。這意味著第一個代碼段與第二個代碼段等效。

儘管它們的定義相似,但 static 和 thread_local 變數有顯著差異。具有靜態儲存持續時間的變數與整個程式相關聯,而thread_local變數與各個執行緒相關聯。每個線程都有自己獨特的物件或與 thread_local 變數關聯的參考。

以上是thread_local 變數在區塊作用域中是隱式靜態的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn