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!