Maison  >  Article  >  développement back-end  >  Pourquoi C n'a-t-il pas de `std::shared_ptr` non atomique ?

Pourquoi C n'a-t-il pas de `std::shared_ptr` non atomique ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 01:21:02785parcourir

 Why Doesn't C   Have a Non-Atomic `std::shared_ptr`?

L'équivalent non atomique de std::shared_ptr et pourquoi il est absent dans

std::shared_ptr a pris de l'importance en tant que le pointeur intelligent de propriété partagée à incrémentation et décrémentation atomique. Cependant, la question se pose de savoir s'il existe un équivalent non atomique.

1. Options alternatives non atomiques

Malgré un examen approfondi de la en-tête, aucun équivalent non atomique de std::shared_ptr n'est facilement accessible. Il existe cependant des solutions hors norme.

2. Pourquoi un std::shared_ptr non atomique n'a pas été inclus dans C 11

L'absence d'une version non atomique dans C 11 découle des discussions tenues lors de la réunion de Rapperswil en 2010.

Raisons contre l'option non atomique :

  • Problèmes potentiels lorsque le code écrit sans atomicité est ensuite utilisé avec des threads, entraînant des problèmes de débogage.
  • L'avantage d'avoir un shared_ptr universel avec un comportement cohérent dans toutes les bibliothèques.
  • L'impact minimal sur les performances de l'atomicité, qui est atténué par des opérations efficaces de construction et d'affectation de déplacement.
  • La disponibilité de partages non atomiques personnalisés pointeurs si nécessaire.

Sur la base de ces arguments, le Language Working Group (LWG) a décidé de ne pas introduire une variante non atomique de shared_ptr en C 11.

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