Heim > Backend-Entwicklung > C++ > Ist das Singleton-Muster von Meyers in C 11 und höher threadsicher?

Ist das Singleton-Muster von Meyers in C 11 und höher threadsicher?

Patricia Arquette
Freigeben: 2024-12-30 17:04:10
Original
898 Leute haben es durchsucht

Is Meyers' Singleton Pattern Thread-Safe in C  11 and Later?

Thread-Sicherheit der Singleton-Musterimplementierung von Meyers

Diese Implementierung des Singleton-Musters von Meyers mit verzögerter Initialisierung wirft Fragen zur Thread-Sicherheit auf.

Meyers' Singleton-Implementierung

Die Der bereitgestellte Code für das Singleton-Muster lautet wie folgt:

static Singleton& instance()
{
     static Singleton s;
     return s;
}
Nach dem Login kopieren

Thread-Sicherheitsanalyse

In C 11 ist diese Implementierung aufgrund der Garantie in §6.7 threadsicher [stmt.dcl] p4:

"Wenn die Steuerung gleichzeitig in die Deklaration eintritt, während die Variable initialisiert wird, muss die gleichzeitige Ausführung warten für den Abschluss der Initialisierung.“

Compiler wie GCC (seit Version 4.3) und Visual Studio (seit 2015) unterstützen diese Funktion.

C 03-Implementierung

In C 03 war der Code nicht threadsicher. Meyers‘ Artikel „C and the Perils of Double-Checked Locking“ erörtert solche Bedenken. Um die Parallelität zu gewährleisten, wurde eine vollständige Sperrung rund um die Instanziierungsmethode empfohlen, während bei doppelt geprüften Sperrvarianten auf bestimmten Architekturen ohne Speicherbarrieren möglicherweise Race Conditions auftreten.

Das obige ist der detaillierte Inhalt vonIst das Singleton-Muster von Meyers in C 11 und höher 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