Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie in C 11 einen Thread-sicheren Singleton erstellen, ohne „“ zu verwenden?

Können Sie in C 11 einen Thread-sicheren Singleton erstellen, ohne „“ zu verwenden?

DDD
DDDOriginal
2024-10-30 02:34:29206Durchsuche

Can You Create a Thread-Safe Singleton in C  11 Without Using ``?

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

  1. Die im Originalcode erwähnte Funktion „clear()“ wird zum Testen und zum Testen verwendet sollte nicht in einer realen Singleton-Implementierung enthalten sein.
  2. Die Atombibliothek wird in der Antwort des Experten nicht referenziert.
  3. Das in der Frage enthaltene Codebeispiel wird in der nicht analysiert Antwort.

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!

Stellungnahme:
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