Initialisierung lokaler statischer Variablen in C 11: Thread-Sicherheit
In Bezug auf die Thread-Sicherheit der Initialisierung lokaler statischer Variablen in C 11 gab es zahlreiche Diskussionen. Ziel dieses Artikels ist es, eine umfassende Antwort basierend auf dem aktuellen Standard- und Implementierungsstatus zu geben.
C 11 Thread-Sicherheit lokaler statischer Variablen
Abschnitt 6.7 des C 11 Der Standard besagt ausdrücklich, dass die Initialisierung einer lokalen statischen Variablen erfolgt, wenn die Steuerung zum ersten Mal ihre Deklaration durchläuft. Darüber hinaus gilt die Initialisierung nach ihrem Abschluss als abgeschlossen, und jede gleichzeitige Ausführung, die während der Initialisierung in die Deklaration eingeht, muss auf ihren Abschluss warten.
Implementierung in Compilern
In Aufgrund der Einhaltung des Standards haben beliebte Compiler wie GCC 4.7, Visual C 2011 und Clang 3.0 eine threadsichere Initialisierung für lokale statische Variablen implementiert. Dadurch wird sichergestellt, dass der Konstruktor einer lokalen statischen Variablen, wie beispielsweise lg im bereitgestellten Beispiel, nur einmal ausgeführt wird, was eine threadsichere Initialisierung gewährleistet.
Zusätzliche Überlegungen
Während die Initialisierung threadsicher ist, ist es wichtig zu beachten, dass sich dies nicht auf den nachfolgenden Zugriff auf die Variable über eine Referenz erstreckt. Daher ist es weiterhin notwendig, die Thread-Sicherheit bei der Verwendung der initialisierten Variablen zu gewährleisten, da der Standard keine spezifischen Garantien für den Thread-sicheren Zugriff über die Initialisierungsphase hinaus angibt.
Das obige ist der detaillierte Inhalt vonIst die Initialisierung lokaler statischer Variablen in C 11 Thread-sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!