shared_ptr Thread-safety?
-
Hallo
wie schaut es aus mit der thread-safety von tr1::shared_ptr.
Die boost-Implementation scheint zumindest bei simultanen Lesen oder simultanen Schreiben (verschiedener shared_ptr-Instanzen mit gleichem unterliegenden Objekt) nach Dokumentation (http://www.boost.org/doc/libs/1_38_0/libs/smart_ptr/shared_ptr.htm#ThreadSafety) keine Probleme zu haben (liege ich da richtig?). Aber wie sieht es mit tr1 aus? In der Spezifikation habe ich nichts dazu gefunden. Ist das verhalten von shared_ptr also undefiniert oder wie läuft das?Danke!
-
Thread Safety wird idR als Implementation Defined angesehen.
Normalerweise kann man davon ausgehen, dass wenn man gegen die Multithreaded Runtime verwendet der Code auch thread safe ist - aber genaueres erfaehrst du aus der Doku deines Compilers/deiner Library.
-
Bei boost kann mans glaub ich über ein define einstellen.
-
Selter schrieb:
(liege ich da richtig?)
Nein. Simultanes Lesen ist erlaubt, mehr nicht. Simultanes Schreiben oder gleichzeitiges Lesen und Schreiben ist undefiniert. Steht auch in dem Link so drin mit extra Beispielen.
-
pumuckl schrieb:
Selter schrieb:
(liege ich da richtig?)
Nein. Simultanes Lesen ist erlaubt, mehr nicht. Simultanes Schreiben oder gleichzeitiges Lesen und Schreiben ist undefiniert. Steht auch in dem Link so drin mit extra Beispielen.
Different shared_ptr instances can be "written to" (accessed using mutable operations such as operator= or reset) simultaneosly by multiple threads (even when these instances are copies, and share the same reference count underneath.)
?!
-
Different shared_ptr instances can be "written to" ...
Soll heißen: du darfst simultan auf verschiedenen shared_ptr lesen, aber nicht auf dem selben.
-
pumuckl schrieb:
Different shared_ptr instances can be "written to" ...
Soll heißen: du darfst simultan auf verschiedenen shared_ptr lesen, aber nicht auf dem selben.
mit lesen meinst du vmtl. schreiben, oder? Und das widerspricht in meinen Augen nicht dem, was ich im ersten Post gesagt habe "simultanen Schreiben (verschiedener shared_ptr-Instanzen mit gleichem unterliegenden Objekt)"
-
Selter schrieb:
mit lesen meinst du vmtl. schreiben, oder?
Jo sorry, verschrieben...
Selter schrieb:
Und das widerspricht in meinen Augen nicht dem, was ich im ersten Post gesagt habe "simultanen Schreiben (verschiedener shared_ptr-Instanzen mit gleichem unterliegenden Objekt)"
Ups da hab ich mich wohl verlesen sry...