Heim > Backend-Entwicklung > C++ > Warum gibt es in der C-Standardbibliothek kein nichtatomares Äquivalent von std::shared_ptr?

Warum gibt es in der C-Standardbibliothek kein nichtatomares Äquivalent von std::shared_ptr?

Susan Sarandon
Freigeben: 2024-11-03 03:06:29
Original
832 Leute haben es durchsucht

Why is there no non-atomic equivalent of std::shared_ptr in the C   standard library?

Untersuchung des Falles für ein nichtatomares Äquivalent von std::shared_ptr

Einführung

Intelligente Zeiger in C 11 bieten einen leistungsstarken Mechanismus für die Speicherverwaltung, wobei std::shared_ptr die primäre Wahl für den gemeinsamen Besitz ist. Aufgrund seiner atomaren Natur entsteht jedoch ein Mehraufwand, der in bestimmten Szenarien unnötig oder unerwünscht sein kann. Dieser Artikel untersucht das Fehlen eines nicht-atomaren Äquivalents von std::shared_ptr in der Standardbibliothek und untersucht mögliche Gründe für diese Entscheidung.

Die Suche nach einer nicht-atomaren Alternative

Entgegen der Prämisse der Frage ist std::shared_ptr nicht der einzige intelligente Zeiger in Atomizität zu zeigen. std::weak_ptr ist ebenfalls atomar und stellt eine mögliche Lösung für Szenarien dar, die nicht besitzende Referenzen erfordern. Dennoch deutet das Interesse an einer dedizierten nicht-atomaren shared_ptr-Alternative auf eine wahrgenommene Lücke in der Bibliothek hin.

Gründe für den Ausschluss

Trotz der potenziellen Vorteile einer nicht- atomic shared_ptr, entschied sich das C-Standardisierungskomitee dafür, keines in C 11 aufzunehmen. Die Entscheidung ging auf eine hitzige Debatte auf dem Rapperswil-Treffen 2010 zurück. Zu den Argumenten gegen die Aufnahme gehörten:

  • Potenzial für zukünftige Thread-Nutzung: Nicht-atomare shared_ptrs könnten versehentlich in Multithread-Kontexten verwendet werden, was zu subtilen und schwer zu erkennenden Fehlern führt.
  • Konsistenz im Smart Pointer Design: Ein einheitlicher shared_ptr, der die Referenzzählung über alle Anwendungsfälle hinweg einheitlich handhabt, vereinfacht die Interoperabilität und Bibliotheksnutzung.
  • Minimale Leistungskosten: Atomare Operationen in shared_ptr sind nicht unerschwinglich teuer, insbesondere wenn man Verschiebungsoperationen berücksichtigt, die atomare Aktionen umgehen.
  • Benutzerwahl: Entwicklern steht es frei, ihren eigenen nicht-atomaren Smart mit Referenzzählung zu erstellen Zeiger, falls gewünscht.

Fazit

Das Fehlen eines nicht-atomaren Äquivalents von std::shared_ptr im C 11-Standard ist vielfältig. Obwohl das Prinzip „Zahlen Sie für das, was Sie nutzen“ gefährdet wird, stehen Konsistenz, Fehlervermeidung und minimaler Leistungsaufwand im Vordergrund. Die Entscheidung spiegelt einen Kompromiss zwischen der Bereitstellung optimaler Flexibilität und der Gewährleistung der Code-Robustheit wider.

Das obige ist der detaillierte Inhalt vonWarum gibt es in der C-Standardbibliothek kein nichtatomares Äquivalent von std::shared_ptr?. 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