Maison > Article > développement back-end > Est-ce que std::shared_ptr est vraiment Thread-Safe ?
Quel degré de sécurité des threads std::shared_ptr fournit-il ?
std::shared_ptr est un pointeur intelligent qui fournit un comptage de références et un comptage automatique gestion de la mémoire. Bien qu'il garantisse la sécurité des threads indépendamment de la plate-forme de comptage de références, certains aspects de sa sécurité des threads nécessitent des éclaircissements.
Garanties principales de sécurité des threads :
Limitations de Thread-Safety :
Exemple de démonstration :
Considérez le pseudo-code suivant :
// 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));
Il est incorrect de supposer qu'après avoir appelé reset() dans Thread IV, les autres threads ne verront que le nouvel objet. Les Threads II, III et IV pointeront toujours vers l'objet d'origine, et seul Thread IV pointera vers le nouveau.
Conclusion :
std::shared_ptr fournit de solides garanties de sécurité des threads pour le comptage et la destruction des références. Cependant, il est important de se rappeler que la sécurité des threads de l'objet stocké n'est pas garantie et doit être considérée séparément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!