Je lis http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html et certains problèmes de sécurité des threads ne sont toujours pas clairs pour moi:
- Standard garantit que le comptage de références est géré thread-safe et qu'il est indépendant de la plateforme, non?
- Problème similaire - la norme garantit qu'un seul thread (contenant la dernière référence) appellera delete sur un objet partagé, non?
- shared_ptr ne garantit aucune sécurité de thread pour les objets qui y sont stockés?
ÉDITER:
Pseudo code:
// 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));
L'appel de reset () dans le thread IV supprimera l'instance précédente de la classe A créée dans le premier thread et la remplacera par une nouvelle instance? De plus, après avoir appelé reset () dans le thread IV, les autres threads ne verront que l'objet nouvellement créé?
make_shared
place denew