Function
GLibatomic_pointer_compare_and_exchange_full
since: 2.74
Declaration [src]
gboolean
g_atomic_pointer_compare_and_exchange_full (
void* atomic,
gpointer oldval,
gpointer newval,
void* preval
)
Description [src]
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 g_atomic_pointer_compare_and_exchange().
Available since: 2.74
Parameters
atomic-
Type:
void*A pointer to a #gpointer-sized value.
The data is owned by the caller of the function. oldval-
Type:
gpointerThe value to compare with.
The argument can be NULL.The data is owned by the caller of the function. newval-
Type:
gpointerThe value to conditionally replace with.
The argument can be NULL.The data is owned by the caller of the function. preval-
Type:
void*The contents of
atomicbefore this operation.The argument will be set by the function.