使用 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中文網其他相關文章!