Heim  >  Artikel  >  Backend-Entwicklung  >  Bietet C ein nicht-atomares Äquivalent von „std::shared_ptr“?

Bietet C ein nicht-atomares Äquivalent von „std::shared_ptr“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 16:28:01504Durchsuche

Does C   Provide a Non-Atomic Equivalent of `std::shared_ptr`?

Keine atomare Version von std::shared_ptr

Frage: Gibt ein nicht-atomares Äquivalent von std:: shared_ptr existiert außerhalb der Standardbibliothek? Warum war in C 11 keine nicht-atomare Version enthalten?

Antwort:

1. Nicht-atomares Äquivalent

std::shared_ptr ist im Gegensatz zu anderen intelligenten Zeigern in der Standardbibliothek atomar. Obwohl es möglicherweise Alternativen von Drittanbietern gibt, bietet der Standard selbst keine nicht-atomare Version.

2. Ausschluss aus C 11

Die Aufnahme eines nicht-atomaren std::shared_ptr wurde am C 11-Treffen in Rapperswil debattiert. Zu den Argumenten gegen die Aufnahme gehörten:

  • Möglichkeit, dass Code, der die nicht-atomare Version verwendet, später in Thread-Code verwendet wird, was zu unentdeckten Problemen führt.
  • Die Vorteile einer „universellen“ Version " shared_ptr, unabhängig von den verwendeten Funktionen.
  • Die minimalen Auswirkungen der Atomizität auf die Leistung, gemildert durch Bewegungskonstruktion und -zuweisung.
  • Die Möglichkeit für Benutzer, ihre eigenen nicht-atomaren intelligenten Zeiger mit Referenzzählung zu implementieren bei Bedarf.

Nach Prüfung lehnte die LWG letztendlich den Vorschlag für einen nicht-atomaren std::shared_ptr mit der Begründung ab, dass es an einem klaren Konsens mangele und die Vorteile die Nachteile nicht überwiegen.

Das obige ist der detaillierte Inhalt vonBietet C ein nicht-atomares Äquivalent von „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