Thread storage duration
Ein Objekt, dessen Bezeichner mit dem Speicherklassen-Spezifizierer _Thread_local (seit C11) deklariert wird, hat Thread-Speicherdauer. Seine Lebensdauer ist die gesamte Ausführungszeit des Threads, für den es erstellt wurde, und sein gespeicherter Wert wird beim Start des Threads initialisiert. Es existiert ein separates Objekt pro Thread, und die Verwendung des deklarierten Namens in einem Ausdruck bezieht sich auf das Objekt, das mit dem den Ausdruck auswertenden Thread assoziiert ist. Das Ergebnis eines Versuchs, indirekt auf ein Objekt mit Thread-Speicherdauer von einem anderen Thread als demjenigen, mit dem das Objekt assoziiert ist, zuzugreifen, ist implementierungsdefiniert.
Beispiel
const double PI = 3.14159; /* const variable is global to all threads */ _Thread_local unsigned int seed; /* seed is a thread-specific variable */ int main(void) { return 0; }
Mögliche Ausgabe:
(none)