atomic_is_lock_free
|
Definido en el encabezado
<stdatomic.h>
|
||
|
_Bool atomic_is_lock_free
(
const
volatile
A
*
obj
)
;
|
(desde C11) | |
Determina si las operaciones atómicas en todos los objetos del tipo
A
(el tipo del objeto apuntado por
obj
) son libres de bloqueo. En cualquier ejecución de programa dada, el resultado de llamar a
atomic_is_lock_free
es el mismo para todos los punteros del mismo tipo.
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.
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_is_lock_free ) ( ... ) ), 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 inspeccionar |
Valor de retorno
true
si las operaciones sobre todos los objetos del tipo
A
son lock-free,
false
en caso contrario.
Ejemplo
#include <stdio.h> #include <stdatomic.h> _Atomic struct A { int a[100]; } a; _Atomic struct B { int x, y; } b; int main(void) { printf("_Atomic struct A is lock free? %s\n", atomic_is_lock_free(&a) ? "true" : "false"); printf("_Atomic struct B is lock free? %s\n", atomic_is_lock_free(&b) ? "true" : "false"); }
Salida posible:
_Atomic struct A is lock free? false _Atomic struct B is lock free? true
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C publicados anteriormente.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| DR 465 | C11 | esta función era por objeto | esta función es por tipo |
Referencias
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.17.5.1 La función genérica atomic_is_lock_free (p: 205)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.17.5.1 La función genérica atomic_is_lock_free (p: 280)
Véase también
|
indica que el tipo atómico dado es libre de bloqueo
(constante macro) |
|
|
Documentación de C++
para
atomic_is_lock_free
|
|