Heim  >  Artikel  >  Backend-Entwicklung  >  Sind thread_local-Variablen im Blockbereich implizit statisch?

Sind thread_local-Variablen im Blockbereich implizit statisch?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 03:35:02422Durchsuche

Are thread_local Variables Implicitly Static in Block Scope?

Sind mit thread_local deklarierte Variablen automatisch statisch?

Die folgenden Codesegmente erscheinen auf den ersten Blick identisch:

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

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

Der C-Standard weist jedoch einen subtilen Unterschied auf. Beim Definieren einer thread_local-Variablen mit Blockbereich wird der statische Speicherklassenspezifizierer impliziert, sofern er nicht explizit angegeben wird. Dies bedeutet, dass das erste Codesegment dem zweiten entspricht.

Trotz ihrer ähnlichen Definitionen unterscheiden sich statische und thread_local-Variablen erheblich. Variablen mit statischer Speicherdauer sind dem gesamten Programm zugeordnet, während thread_local-Variablen einzelnen Threads zugeordnet sind. Jeder Thread hat sein eigenes eindeutiges Objekt oder seine eigene Referenz, die mit der Variablen thread_local verknüpft ist.

Das obige ist der detaillierte Inhalt vonSind thread_local-Variablen im Blockbereich implizit statisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn