atomic_init
|
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
|
|