13 Stimmen

Gemeinsame, schwache und faule Zeiger in C++

Kennt jemand eine Implementierung von shared_ptr y weak_ptr zusammen mit einem trägen Initialisierungspartner? Die Anforderungen an die Klassen waren:

  • A lazy_ptr Klasse, die es einem Client ermöglicht, das Objekt später (wenn überhaupt) zu konstruieren, ohne die Konstruktorimplementierung zu benötigen

  • A weak_lazy_ptr Klasse, die drei mögliche Zustände hat: noch nicht konstruiert (wird nicht mit einem shared_ptr ), konstruiert (verriegelt auf eine shared_ptr ) und zerstört (wird nicht mit einer shared_ptr )

Ich habe vor einiger Zeit einige Klassen erstellt, die die Aufgabe nicht vollständig erfüllen ( siehe CVu-Artikel hier ), die shared_ptr y weak_ptr in ihrer Umsetzung. Die Hauptprobleme bei einem Modell, das gemeinsame und schwache Zeiger verwendet, anstatt sie zu integrieren, sind folgende:

  1. Sobald alle lazy_ptr Objekte aus dem Geltungsbereich herausfallen, können alle schwachen Referenzen nicht mehr gesperrt werden, auch wenn andere Clients die shared_ptr Versionen

  2. Die Konstruktion von Objekten auf verschiedenen Threads kann nicht kontrolliert werden

Ich wäre dankbar für Hinweise auf andere Versuche, diese Probleme in Einklang zu bringen, oder auf laufende Arbeiten in diesem Bereich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X