Namespaces
Variants

ATOMIC_VAR_INIT

From cppreference.net
Défini dans l'en-tête <stdatomic.h>
#define ATOMIC_VAR_INIT(value) /* non spécifié */
(depuis C11)
(obsolète en C17)
(supprimé en C23)

Se développe en une expression qui peut être utilisée pour initialiser une variable atomique du même type que value .

La valeur initiale d'un objet atomique de durée de stockage automatique qui n'est pas explicitement initialisé est indéterminée. L'initialisation par défaut (zéro) des variables statiques et thread-local produit cependant une valeur valide.

Lors de l'initialisation d'une variable atomique, tout accès concurrent, même via une opération atomique, constitue une course aux données (cela peut se produire si l'adresse est immédiatement transmise à un autre thread avec une memory_order_relaxed opération).

Table des matières

Notes

Cette macro faisait partie de la conception préliminaire des types atomiques C11. Elle n'est pas nécessaire en C11, et est dépréciée en C17 et supprimée en C23.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C publiées antérieurement.

DR Appliqué à Comportement publié Comportement corrigé
DR 485 C11 la spécification était redondante et contradictoire avec le langage de base corrigé

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.17.2.1 La macro ATOMIC_VAR_INIT (p: 201)
  • Norme C11 (ISO/IEC 9899:2011):
  • 7.17.2.1 La macro ATOMIC_VAR_INIT (p: 274)

Voir aussi

initialise un nouveau atomic_flag
(constante macro)
Documentation C++ pour ATOMIC_VAR_INIT