Maison > développement back-end > C++ > Le modèle Singleton de Meyers est-il thread-safe en C 11 et versions ultérieures ?

Le modèle Singleton de Meyers est-il thread-safe en C 11 et versions ultérieures ?

Patricia Arquette
Libérer: 2024-12-30 17:04:10
original
898 Les gens l'ont consulté

Is Meyers' Singleton Pattern Thread-Safe in C  11 and Later?

Sécurité des threads de l'implémentation du modèle Singleton de Meyers

Cette implémentation du modèle Singleton de Meyers utilisant l'initialisation paresseuse soulève des questions sur la sécurité des threads.

Implémentation Singleton de Meyers

Le code fourni pour le modèle Singleton est la suivante :

static Singleton& instance()
{
     static Singleton s;
     return s;
}
Copier après la connexion

Analyse de sécurité des threads

En C 11, cette implémentation est thread-safe en raison de la garantie du §6.7 [stmt .dcl] p4 :

"Si le contrôle entre la déclaration simultanément pendant que la variable est en cours d'initialisation, l'exécution simultanée attendra la fin de l'opération. initialisation."

Les compilateurs comme GCC (depuis la version 4.3) et Visual Studio (depuis 2015) prennent en charge cette fonctionnalité.

Implémentation C 03

Dans C 03, le code n’était pas thread-safe. L'article de Meyers « C et les périls du verrouillage à double vérification » traite de ces préoccupations. Un verrouillage complet autour de la méthode d'instanciation a été recommandé pour garantir la concurrence, tandis que les variantes de verrouillage revérifiées pourraient rencontrer des conditions de concurrence sur des architectures spécifiques sans barrières de mémoire.

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