Maison >développement back-end >C++ >L'implémentation Singleton de Meyers est-elle thread-safe dans différentes normes C ?

L'implémentation Singleton de Meyers est-elle thread-safe dans différentes normes C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 20:12:11979parcourir

Is Meyers' Singleton Implementation Thread-Safe in Different C   Standards?

Implémentation Singleton de Meyers : sécurité des threads dans différentes normes C

L'implémentation par Meyers du modèle Singleton avec initialisation paresseuse pose des questions sur son thread sécurité. Cet article examine son comportement dans différentes normes C.

C 11 et versions ultérieures

Dans C 11 et les normes ultérieures, l'implémentation Singleton de Meyers est thread-safe. Selon la norme (§6.7 [stmt.dcl] p4), l'exécution simultanée de la déclaration doit attendre la fin de l'initialisation.

C 03

En C 03, L'implémentation Singleton de Meyers n'était pas thread-safe. L'article de Meyers sur le « Verrouillage à double vérification » met en évidence ce problème. Il suggère un verrouillage complet autour de la méthode d'instanciation comme approche simple pour garantir la sécurité des threads sur toutes les plates-formes. Les modèles de verrouillage revérifiés peuvent être sujets à des conditions de concurrence critique sur certaines architectures sans barrières de mémoire stratégiques.

Compilateurs pris en charge

Initialisation et destruction dynamiques avec concurrence (Magic Statics sur MSDN ) est la fonctionnalité sous-jacente qui garantit la sécurité des threads dans C 11. Les compilateurs suivants prennent en charge cela fonctionnalité :

  • Visual Studio : pris en charge depuis Visual Studio 2015
  • GCC : pris en charge depuis GCC 4.3

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