Maison > développement back-end > C++ > L'implémentation Singleton de Meyers est-elle Thread-Safe en C 11 ?

L'implémentation Singleton de Meyers est-elle Thread-Safe en C 11 ?

Mary-Kate Olsen
Libérer: 2024-12-21 07:26:10
original
515 Les gens l'ont consulté

Is Meyers' Singleton Implementation Thread-Safe in C  11?

La conception Singleton de Meyers est-elle thread-safe ?

L'implémentation présentée du modèle Singleton de Meyers, utilisant une initialisation paresseuse, soulève la question de sécurité du fil. Voici une analyse des raisons pour lesquelles ce code est thread-safe en C 11 et comment il assure la sécurité des threads.

Thread Safety en C 11

Selon la norme C 11 , §6.7 [stmt.dcl] p4 :

If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
Copier après la connexion

Cela implique qu'en C 11, le l’implémentation ci-dessus devient thread-safe. La norme exige que l'exécution du thread attende la fin de l'initialisation avant d'accéder à la variable, garantissant ainsi la sécurité des threads.

Prise en charge des compilateurs

Les compilateurs suivants prennent en charge l'initialisation dynamique. et Destruction with Concurrency, qui active cette fonctionnalité :

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

Remarque pour C 03

En C 03, le code n'était pas thread-safe. Meyers, dans son article "C and the Perils of Double-Checked Locking", suggère qu'en C 03, le verrouillage complet autour de la méthode d'instanciation est le moyen le plus simple de garantir la sécurité des threads sur toutes les plates-formes.

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