Maison > développement back-end > C++ > le corps du texte

Pourquoi la norme C n'inclut-elle pas un « std::shared_ptr » non atomique ?

Mary-Kate Olsen
Libérer: 2024-10-30 02:03:28
original
780 Les gens l'ont consulté

Why Doesn't the C   Standard Include a Non-Atomic `std::shared_ptr`?

Pointeurs intelligents non atomiques : exploration de l'absence dans le standard C

Dans le domaine de la gestion de la mémoire C, le std::shared_ptr se présente comme un pointeur intelligent exceptionnel en raison de ses opérations atomiques. Cela soulève la question : pourquoi n'y a-t-il pas d'équivalent non atomique dans la bibliothèque de mémoire standard ?

1. Alternatives non atomiques à std::shared_ptr

Bien que std::shared_ptr offre un comportement atomique, certains scénarios peuvent ne pas justifier une telle surcharge. Pour résoudre ce problème, des bibliothèques externes ont vu le jour, fournissant des pointeurs intelligents non atomiques à comptage de références. Cependant, la bibliothèque de mémoire standard elle-même ne dispose pas de telles offres.

2. L'absence dans C 11 : raisons et débat

Malgré l'utilité perçue, une proposition de version non atomique de std::shared_ptr a été rejetée lors du processus de standardisation du C 11. Plusieurs arguments ont alimenté cette décision :

  • Possibilité d'utilisation abusive : Des pointeurs intelligents non atomiques pourraient être utilisés par inadvertance dans des contextes multithread, entraînant des erreurs difficiles à déboguer.
  • Cohérence et interopérabilité : Le maintien d'un seul shared_ptr "universel" avec une fonctionnalité atomique a permis une interopérabilité plus fluide entre les bibliothèques C, y compris celles tierces.
  • Considérations sur les performances : Bien que les opérations atomiques entraînent un coût en termes de performances, elles ne sont pas prohibitives, en particulier lorsque la construction et l'affectation de déplacements sont utilisées.
  • Options de personnalisation : Si un programmeur nécessite un comportement non atomique, ils ne sont pas empêchés de créer leur propre implémentation personnalisée de pointeur intelligent compté par référence.

Conclusion

L'absence d'un std::shared_ptr non atomique dans la norme C est le résultat d'une décision délibérée basée sur des préoccupations concernant une utilisation abusive potentielle, la cohérence, les performances et la flexibilité de personnalisation. Bien que les bibliothèques externes puissent fournir de telles alternatives, la norme elle-même a donné la priorité aux avantages d'un pointeur intelligent atomique universel pour la gestion de la mémoire.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!