Heim > Backend-Entwicklung > C++ > Ist die Singleton-Implementierung von Meyers in verschiedenen C-Standards threadsicher?

Ist die Singleton-Implementierung von Meyers in verschiedenen C-Standards threadsicher?

Patricia Arquette
Freigeben: 2024-12-29 20:12:11
Original
944 Leute haben es durchsucht

Is Meyers' Singleton Implementation Thread-Safe in Different C   Standards?

Meyers' Singleton-Implementierung: Thread-Sicherheit in verschiedenen C-Standards

Meyers' Implementierung des Singleton-Musters mit verzögerter Initialisierung wirft Fragen zu seinem Thread auf Sicherheit. Dieser Artikel untersucht sein Verhalten in verschiedenen C-Standards.

C 11 und höher

In C 11 und nachfolgenden Standards ist die Singleton-Implementierung von Meyers threadsicher. Gemäß dem Standard (§6.7 [stmt.dcl] p4) muss die gleichzeitige Ausführung der Deklaration auf den Abschluss der Initialisierung warten.

C 03

In C 03, Die Singleton-Implementierung von Meyers war nicht threadsicher. Meyers‘ Artikel über „Double-Checked Locking“ beleuchtet dieses Problem. Er schlägt eine vollständige Sperrung der Instanziierungsmethode als einfachen Ansatz vor, um die Thread-Sicherheit auf allen Plattformen zu gewährleisten. Doppelt überprüfte Sperrmuster können auf bestimmten Architekturen ohne strategische Speicherbarrieren anfällig für Race Conditions sein.

Unterstützte Compiler

Dynamische Initialisierung und Zerstörung mit Parallelität (Magic Statics auf MSDN ) ist die zugrunde liegende Funktion, die Thread-Sicherheit in C 11 gewährleistet. Die folgenden Compiler unterstützen dies Feature:

  • Visual Studio: Unterstützt seit Visual Studio 2015
  • GCC: Unterstützt seit GCC 4.3

Das obige ist der detaillierte Inhalt vonIst die Singleton-Implementierung von Meyers in verschiedenen C-Standards 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