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.
Fonction générique atomic_compare_exchange_strong_explicit(C11)
Entête à inclure
#include <stdatomic.h>
Fonction générique atomic_compare_exchange_strong_explicit(C11)
_Bool atomic_compare_exchange_strong_explicit( volatile A *object, C *expected, C desired, memory_order success, memory_order failure );
La fonction générique atomic_compare_exchange_strong_explicit compare atomiquement la valeur stockée avec une valeur attendue, puis tente de la remplacer si elle correspond.
La variante strong ne produit pas d'échec parasite dans le cas simple.
Paramètres
object : adresse de l'objet atomique à modifier.
expected : adresse de la valeur attendue ; elle est mise à jour en cas d'échec.
desired : valeur à stocker en cas de succès.
success : ordre mémoire utilisé en cas de succès.
failure : ordre mémoire utilisé en cas d'échec.
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
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
atomic_int value = 10;
int expected = 10;
int changed = atomic_compare_exchange_strong_explicit( &value, &expected, 20, memory_order_acq_rel, memory_order_acquire );
printf( "changed=%d, value=%d\n", changed, atomic_load( &value ) );
return EXIT_SUCCESS;
}
Exemple d'utilisation de atomic_compare_exchange_strong_explicit
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 :