thread_local で宣言された変数は自動的に静的ですか?
次のコード セグメントは一見すると同一に見えます:
<code class="cpp">void f() { thread_local vector<int> V; // ... } void f() { static thread_local vector<int> V; // ... }</code>
ただし、C 標準では微妙な違いが明らかになります。ブロック スコープで thread_local 変数を定義する場合、明示的に指定されていない限り、静的ストレージ クラス指定子が暗黙的に指定されます。これは、最初のコード セグメントが 2 番目のコード セグメントと同等であることを意味します。
定義は似ていますが、静的変数と thread_local 変数は大きく異なります。静的保存期間を持つ変数はプログラム全体に関連付けられ、thread_local 変数は個々のスレッドに関連付けられます。各スレッドには、thread_local 変数に関連付けられた独自のオブジェクトまたは参照があります。
以上がthread_local変数はブロックスコープ内で暗黙的に静的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。