Maison >développement back-end >C++ >Pouvez-vous créer un singleton Thread-Safe en C 11 sans utiliser `` ?
Comment implémenter un singleton multithread-safe en C 11 sans utiliser
Introduction
L'implémentation de singletons thread-safe en C 11 est un sujet de débat depuis l'introduction du multithreading. Bien que les mutex fournissent un moyen simple d’assurer la sécurité des threads, ils peuvent introduire une surcharge de performances. Cet article explore une approche alternative pour implémenter des singletons multithread-safe sans utiliser de mutex.
Initialisation paresseuse avec attente simultanée
C 11 introduit une nouvelle fonctionnalité de langage qui simplifie l'implémentation d'initialisation paresseuse. L'exécution simultanée attendra désormais si une variable locale statique est déjà en cours d'initialisation, éliminant ainsi le besoin de verrouillage manuel.
Implémentation
Une fonction statique simple qui récupère l'instance singleton peut être implémenté comme suit :
<code class="cpp">static Singleton& get() { static Singleton instance; return instance; }</code>
Cette fonction fournira un comportement correct en C 11 tant que le compilateur implémente correctement la norme.
Découragement des singletons
Malgré cette mise en œuvre simplifiée, l'auteur souligne que l'utilisation de singletons est généralement déconseillée. Ils préconisent d'éviter complètement les singletons en raison de leurs limitations inhérentes.
Notes supplémentaires
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!