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é

Fonction générique atomic_compare_exchange_weak (C11)

Entête à inclure

#include <stdatomic.h>

Fonction générique atomic_compare_exchange_weak (C11)

_Bool atomic_compare_exchange_weak( volatile A *object, C *expected, C desired );

La fonction générique atomic_compare_exchange_weak compare atomiquement la valeur stockée avec une valeur attendue, puis tente de la remplacer si elle correspond.

La variante weak peut échouer même si la valeur attendue correspond. Elle est surtout utile dans une boucle de tentative.

Paramètres

Valeur de retour

La fonction retourne une valeur vraie si l'échange a été réalisé.

Exemple de code

L'exemple suivant montre une utilisation simple de cette interface.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    atomic_int value = 10;
    int expected = 10;

    int changed;
    do {
        expected = 10;
        changed = atomic_compare_exchange_weak( &value, &expected, 20 );
    } while ( ! changed );

    printf( "changed=%d, value=%d\n", changed, atomic_load( &value ) );
    return EXIT_SUCCESS;
}
Exemple d'utilisation de atomic_compare_exchange_weak

Cet exemple produit l'affichage suivant.

changed=1, value=20

Sujets connexes

La librairie <stdatomic.h>
atomic_exchange
atomic_compare_exchange_weak_explicit


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