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

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

Susan Sarandon
リリース: 2024-11-02 03:35:02
オリジナル
482 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート