estoy leyendo http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html y algunos problemas de seguridad de rosca todavía no están claras para mí:hilo de seguridad std :: shared_ptr explicó
- garantías establecidas en que el recuento de referencias se manipula el hilo de seguridad y es independiente de la plataforma, ¿verdad?
- Problema similar: el estándar garantiza que solo un hilo (manteniendo la última referencia) llamará a eliminar en el objeto compartido, ¿verdad?
- shared_ptr no garantiza ningún hilo de seguridad para el objeto almacenado en él?
EDIT:
Pseudo código:
// Thread I
shared_ptr<A> a (new A (1));
// Thread II
shared_ptr<A> b (a);
// Thread III
shared_ptr<A> c (a);
// Thread IV
shared_ptr<A> d (a);
d.reset (new A (10));
restablecimiento de llamada() en el hilo IV eliminará anterior instancia de una clase creada en primer hilo y sustituirla por nueva instancia? Además, después de llamar a reset() en el hilo IV, ¿otros hilos verán solo el objeto recién creado?
Derecha, derecha e derecha. – spraff
debe usar 'make_shared' en lugar de' new' – qdii