So implementieren Sie einen Multithread-sicheren Singleton in C 11 ohne Verwendung von
Einführung
Die Implementierung threadsicherer Singletons in C 11 ist seit der Einführung von Multithreading ein Diskussionsthema. Während Mutexe eine einfache Möglichkeit bieten, Thread-Sicherheit zu erreichen, können sie zu Leistungseinbußen führen. In diesem Artikel wird ein alternativer Ansatz zur Implementierung multithreadsicherer Singletons ohne Verwendung von Mutexes untersucht.
Lazy Initialization with Concurrent Waiting
C 11 führt eine neue Sprachfunktion ein, die die Implementierung vereinfacht der verzögerten Initialisierung. Die gleichzeitige Ausführung wartet nun, wenn eine statische lokale Variable bereits initialisiert wird, wodurch die Notwendigkeit einer manuellen Sperre entfällt.
Implementierung
Eine einfache statische Funktion, die die Singleton-Instanz abruft kann wie folgt implementiert werden:
<code class="cpp">static Singleton& get() { static Singleton instance; return instance; }</code>
Diese Funktion sorgt für korrektes Verhalten in C 11, solange der Compiler den Standard ordnungsgemäß implementiert.
Entmutigung von Singletons
Trotz dieser vereinfachten Implementierung betont der Autor, dass von der Verwendung von Singletons generell abgeraten wird. Sie befürworten die vollständige Vermeidung von Singletons aufgrund ihrer inhärenten Einschränkungen.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonKönnen Sie in C 11 einen Thread-sicheren Singleton erstellen, ohne „' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!