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

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