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:
gpointer
The value to compare with.
The argument can be NULL
.The data is owned by the caller of the function. newval
-
Type:
gpointer
The 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
atomic
before this operation.The argument will be set by the function.