Heim > Backend-Entwicklung > C++ > Ist die statische lokale Variableninitialisierung von C 11 threadsicher?

Ist die statische lokale Variableninitialisierung von C 11 threadsicher?

Susan Sarandon
Freigeben: 2024-12-29 11:22:11
Original
492 Leute haben es durchsucht

Is C  11's Static Local Variable Initialization Thread-Safe?

Initialisierung lokaler statischer Variablen in C 11: Thread-Sicherheit

Frage:

In C 11: Läuft der Konstruktor einer statischen lokalen Variablen wie der im folgenden Beispiel genau einmal, auch im Multithread-Modus? Szenarien?

Logger& g_logger() {
    static Logger lg;
    return lg;
}
Nach dem Login kopieren

Antwort:

Gemäß dem C 11-Standard in Abschnitt 6.7 wird eine statische lokale Variable initialisiert, wenn die Steuerung zum ersten Mal ihre Deklaration durchläuft. Diese Initialisierung muss abgeschlossen sein, bevor eine gleichzeitige Ausführung fortgesetzt werden kann. Darüber hinaus ist es der Implementierung untersagt, während dieser Initialisierung einen Deadlock zu verursachen.

Compiler-Implementierungen:

Aktuelle Versionen beliebter Compiler, einschließlich gcc 4.7, vc 2011 und clang 3.0, implementieren Sie dieses Thread-sichere Verhalten ordnungsgemäß. Daher können Sie sicher sein, dass die lokale statische Variable nur einmal initialisiert wird, was den korrekten Betrieb in Multithread-Szenarien gewährleistet.

Zusätzliche Hinweise:

Das ist es Es ist wichtig zu beachten, dass die Initialisierung der statischen lokalen Variablen zwar threadsicher ist, der nachfolgende Zugriff auf die Variable über eine Referenz wie lg jedoch möglicherweise nicht threadsicher ist, es sei denn, es werden zusätzliche Synchronisierungsmaßnahmen ergriffen implementiert.

Das obige ist der detaillierte Inhalt vonIst die statische lokale Variableninitialisierung von C 11 threadsicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage