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
Libérer: 2024-12-29 20:12:11
original
1007 Les gens l'ont consulté

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 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