Namespaces
Variants

atomic_init

From cppreference.net
Definido en el encabezado <stdatomic.h>
void atomic_init ( volatile A * obj, C desired ) ;
(desde C11)

Inicializa el objeto atómico construido por defecto obj con el valor desired . La función no es atómica: el acceso concurrente desde otro hilo, incluso a través de una operación atómica, es una condición de carrera de datos.

Esta es una función genérica definida para todos los tipos de objetos atómicos A . El argumento es un puntero a un tipo atómico volátil para aceptar direcciones de objetos atómicos tanto no volátiles como volátiles (por ejemplo, E/S mapeadas en memoria), y se preserva la semántica volátil cuando se aplica esta operación a objetos atómicos volátiles. C es el tipo no atómico correspondiente a A .

No está especificado si el nombre de una función genérica es una macro o un identificador declarado con vinculación externa. Si se suprime una definición de macro para acceder a una función real (por ejemplo, entre paréntesis como ( atomic_init ) ( ... ) ), o un programa define un identificador externo con el nombre de una función genérica, el comportamiento no está definido.

Contenidos

Parámetros

obj - puntero al objeto atómico a inicializar
desired - valor con el que inicializar el objeto atómico

Valor de retorno

(ninguno)

Notas

atomic_init es la única forma de inicializar objetos atómicos asignados dinámicamente. Por ejemplo:

_Atomic int *p = malloc(sizeof(_Atomic int));
atomic_init(p, 42);

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.17.2.2 La función genérica atomic_init (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.17.2.2 La función genérica atomic_init (p: 201)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.17.2.2 La función genérica atomic_init (p: 274-275)

Véase también

(C11) (obsoleto en C17) (eliminado en C23)
inicializa un nuevo objeto atómico
(macro de función)
Documentación de C++ para atomic_init