ホームページ  >  記事  >  バックエンド開発  >  thread_local変数はブロックスコープ内で暗黙的に静的ですか?

thread_local変数はブロックスコープ内で暗黙的に静的ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 03:35:02423ブラウズ

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 変数を定義する場合、明示的に指定されていない限り、静的ストレージ クラス指定子が暗黙的に指定されます。これは、最初のコード セグメントが 2 番目のコード セグメントと同等であることを意味します。

定義は似ていますが、静的変数と thread_local 変数は大きく異なります。静的保存期間を持つ変数はプログラム全体に関連付けられ、thread_local 変数は個々のスレッドに関連付けられます。各スレッドには、thread_local 変数に関連付けられた独自のオブジェクトまたは参照があります。

以上がthread_local変数はブロックスコープ内で暗黙的に静的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。