Heim  >  Artikel  >  Backend-Entwicklung  >  Warum hat C kein nicht-atomares „std::shared_ptr“?

Warum hat C kein nicht-atomares „std::shared_ptr“?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 01:21:02788Durchsuche

 Why Doesn't C   Have a Non-Atomic `std::shared_ptr`?

Nichtatomares Äquivalent von std::shared_ptr und warum es im nicht vorhanden ist

std::shared_ptr hat an Bedeutung gewonnen als der atomar inkrementierende und dekrementierende Smart Pointer für gemeinsames Eigentum. Allerdings stellt sich die Frage, ob es ein nicht-atomares Äquivalent gibt.

1. Nicht-atomare alternative Optionen

Trotz ausführlicher Prüfung des Im Header ist kein nicht-atomares Äquivalent von std::shared_ptr leicht zugänglich. Es gibt jedoch Lösungen außerhalb des Standards.

2. Warum ein nicht-atomarer std::shared_ptr nicht in C 11 enthalten war

Das Fehlen einer nicht-atomaren Version in C 11 geht auf Diskussionen zurück, die während des Rapperswil-Treffens im Jahr 2010 geführt wurden.

Gründe gegen die nicht-atomare Option:

  • Potenzielle Probleme, wenn ohne Atomizität geschriebener Code später mit Threads verwendet wird, was zu Debugging-Herausforderungen führt.
  • Der Vorteil eines universellen shared_ptr mit konsistentem Verhalten über Bibliotheken hinweg.
  • Die minimalen Auswirkungen der Atomizität auf die Leistung, die durch effiziente Verschiebungskonstruktions- und Verschiebungszuweisungsvorgänge gemildert werden.
  • Die Verfügbarkeit benutzerdefinierter nichtatomarer gemeinsam genutzter Elemente Hinweise, falls erforderlich.

Basierend auf diesen Argumenten entschied sich die Language Working Group (LWG) gegen die Einführung einer nicht-atomaren Variante von shared_ptr in C 11.

Das obige ist der detaillierte Inhalt vonWarum hat C kein nicht-atomares „std::shared_ptr“?. 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