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 einemshared_ptr
), konstruiert (verriegelt auf eineshared_ptr
) und zerstört (wird nicht mit einershared_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:
-
Sobald alle
lazy_ptr
Objekte aus dem Geltungsbereich herausfallen, können alle schwachen Referenzen nicht mehr gesperrt werden, auch wenn andere Clients dieshared_ptr
Versionen -
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.