Namespaces
Variants

atomic_is_lock_free

From cppreference.net
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