Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Macros ATOMIC_*_LOCK_FREE (C11)

Entête à inclure

#include <stdatomic.h>

Ces macros indiquent si les opérations d'une famille de types atomiques sont lock-free. La valeur 0 signifie jamais lock-free, 1 parfois lock-free et 2 toujours lock-free.

Macro Signification
ATOMIC_BOOL_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_CHAR_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_CHAR16_T_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_CHAR32_T_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_WCHAR_T_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_SHORT_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_INT_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_LONG_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_LLONG_LOCK_FREE Valeur 0, 1 ou 2.
ATOMIC_POINTER_LOCK_FREE Valeur 0, 1 ou 2.

Exemple de code

L'exemple suivant affiche les garanties lock-free pour quelques types courants.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    printf( "int     : %d\n", ATOMIC_INT_LOCK_FREE );
    printf( "long    : %d\n", ATOMIC_LONG_LOCK_FREE );
    printf( "pointer : %d\n", ATOMIC_POINTER_LOCK_FREE );

    return EXIT_SUCCESS;
}
Tester les macros lock-free

Les valeurs exactes dépendent de la plate-forme.

int     : 2
long    : 2
pointer : 2

Sujets connexes

La librairie <stdatomic.h>
atomic_is_lock_free
types atomiques


Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé