Maison  >  Article  >  développement back-end  >  Pourquoi la bibliothèque standard de C n'offre-t-elle pas une version non atomique de `std::shared_ptr` ?

Pourquoi la bibliothèque standard de C n'offre-t-elle pas une version non atomique de `std::shared_ptr` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 00:03:02247parcourir

Why Doesn't C  's Standard Library Offer a Non-Atomic Version of `std::shared_ptr`?

L'équivalent non atomique de std::shared_ptr

Question :

Y a-t-il une alternative à std::shared_ptr qui n'a pas son atomicité inhérente ? De plus, pourquoi la bibliothèque standard C n'inclut-elle pas d'option non atomique ?

Réponse :

1. Disponibilité d'alternatives non atomiques :

La bibliothèque standard C n'offre pas de variante non atomique de std::shared_ptr. Cependant, des bibliothèques tierces peuvent fournir de telles implémentations. Avant l'introduction de std::shared_ptr dans C 11, de nombreux développeurs créaient leurs propres pointeurs intelligents comptés par référence, offrant potentiellement des options non atomiques.

2. Justification d'Atomic std::shared_ptr dans C 11 :

Au cours du processus de standardisation C 11, la proposition d'inclure une version non atomique de std::shared_ptr a été examinée et finalement rejetée. Les arguments suivants ont influencé cette décision :

  • Utilisation abusive potentielle : Les pointeurs intelligents non atomiques écrits en code threadé pourraient introduire des erreurs subtiles et difficiles à déboguer.
  • Cohérence et interopérabilité : Avoir une version unique et cohérente de std::shared_ptr facilite l'interopérabilité des bibliothèques et réduit la confusion.
  • Faible coût de performance : Les opérations atomiques ont un impact non -zéro surcharge, mais elle est atténuée par l'utilisation de la sémantique de déplacement, qui évite les opérations atomiques lors des opérations courantes telles que l'effacement et l'insertion de vecteurs.
  • Implémentations personnalisées : Les développeurs peuvent créer leurs propres non- pointeurs intelligents atomiques s'ils le souhaitent.

Version non atomique proposée :

Malgré le rejet dans C 11, il peut y avoir eu des propositions pour un non- version atomique de std::shared_ptr soumise à Boost ou au comité des normes. Cependant, ces propositions n'ont pas obtenu un soutien suffisant pour être incluses dans la norme officielle.

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!

Déclaration:
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