compare_and_exchange_full
Description:
[ Version ( since = "2.74" ) ]
[ CCode ( cname = "g_atomic_int_compare_and_exchange_full" ) ]
public bool compare_and_exchange_full (ref uint atomic, uint oldval, uint newval, out uint preval)
[ CCode ( cname = "g_atomic_int_compare_and_exchange_full" ) ]
public bool compare_and_exchange_full (ref uint atomic, uint oldval, uint newval, out uint preval)
Compares atomic to oldval and, if equal, sets it to newval.
If atomic was not equal to oldval then no change occurs. In any case the value of atomic before this
operation is stored in preval.
This compare and exchange is done atomically.
Think of this operation as an atomic version of `{ *preval = *atomic; if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; }`.
This call acts as a full compiler and hardware memory barrier.
See also compare_and_exchange
Parameters:
| atomic | |
| oldval |
the value to compare with |
| newval |
the value to conditionally replace with |
| preval |
the contents of |
Returns:
|
true if the exchange took place |
Namespace: GLib.AtomicUint
Package: glib-2.0