nach Boost:Umsetzung der Sperre()
auf das Objekt zuzugreifen, kann ein auf ein weak_ptr Shared_ptr umgewandelt werden unter Verwendung des Shared_ptr Konstruktor oder die Elementfunktion zu sperren.
wieder aus boost:
shared_ptr<T> lock() const;
//Returns: expired()? shared_ptr<T>(): shared_ptr<T>(*this).
Soweit ich verstehen, Return shared_ptr<T>(*this)
bedeutet eine neue Shared_ptr mit Referenzzählung von 1 zu schaffen; Und das wollen wir definitiv nicht. Also wahrscheinlich verstehe ich es nicht richtig. Wird jemand erklären? Vielen Dank!
Der Code in der Zeile "Returns:" ist jedoch nicht Thread-sicher. Ich vermute, das ist jetzt, wie es * tatsächlich * implementiert wurde (meine Kopie der Standard-Notizen, "atomar ausgeführt"). –
Das bedeutet, dass 'Vorlage explizite shared_ptr (weak_ptr const & r);' wird aufgerufen wird? –
Sanich
Ja, technisch die ursprüngliche Shared_ptr Instanz über die weak_ptr zugegriffen wird, aber immer noch die (aktualisiert die Antwort, ganz zu schweigen). – axalis