sto leggendo http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html e alcuni problemi di sicurezza thread non sono ancora chiaro per me:std :: shared_ptr filo di sicurezza ha spiegato
- garanzie standard che il conteggio di riferimento viene manipolato thread-safe ed è indipendente dalla piattaforma, giusto?
- Problema simile: lo standard garantisce che solo un thread (contenente l'ultimo riferimento) chiamerà Elimina su oggetto condiviso, giusto?
- shared_ptr non garantisce alcuna sicurezza del thread per l'oggetto memorizzato in esso?
EDIT:
Pseudo codice:
// 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));
Calling reset() in filo di IV eliminerà precedente istanza di una classe creata nel primo thread e sostituirlo con nuova istanza? Inoltre, dopo aver chiamato reset() nel thread IV, altri thread vedranno solo oggetti appena creati?
Destra, destra e destra. – spraff
dovresti usare 'make_shared' invece di' new' – qdii