Maison > développement back-end > C++ > Comment C 11 garantit-il l'initialisation thread-safe des variables statiques locales ?

Comment C 11 garantit-il l'initialisation thread-safe des variables statiques locales ?

Barbara Streisand
Libérer: 2024-12-24 12:11:15
original
244 Les gens l'ont consulté

How Does C  11 Guarantee Thread-Safe Initialization of Local Static Variables?

Initialisation thread-safe des variables statiques locales en C 11

Des inquiétudes ont été soulevées concernant l'initialisation thread-safe des variables statiques locales dans C et son évolution à travers différentes normes. Abordons cela spécifiquement dans le contexte de C 11.

Norme C 11

La norme C 11 (et non le projet) dans la section 6.7 précise que :

  • Les variables statiques locales sont initialisées la première fois que le contrôle temporel entre dans leur déclaration.
  • Concurrent l'exécution entrant dans la déclaration pendant l'initialisation de la variable doit attendre la fin de l'initialisation.
  • L'implémentation ne doit pas introduire de blocages lors de l'exécution de l'initialiseur.

Par conséquent, en C 11, le thread-safe l'initialisation des variables statiques locales est finalisée.

Compilateurs populaires Implémentation

Principaux compilateurs, tels que :

  • gcc 4.7
  • vc 2011
  • clang 3.0

avoir correctement implémenté le comportement d'initialisation thread-safe requis par la norme C 11. Cela garantit que le constructeur d'une variable statique locale comme lg dans l'exemple ne s'exécutera qu'une seule fois, même dans un environnement multithread.

Considérations supplémentaires

C'est important à noter que l'initialisation thread-safe s'applique uniquement à l'initialisation de la variable elle-même. Les accès ultérieurs à la variable via une référence ne sont pas garantis comme étant thread-safe à moins que des mécanismes de synchronisation supplémentaires ne soient utilisés.

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