Atomic.intCompareAndExchange

Compares @atomic to @oldval and, if equal, sets it to @newval. If @atomic was not equal to @oldval then no change occurs.

This compare and exchange is done atomically.

Think of this operation as an atomic version of { if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; }.

This call acts as a full compiler and hardware memory barrier.

struct Atomic
static
bool
intCompareAndExchange
(
int* atomic
,
int oldval
,
int newval
)

Parameters

atomic int*

a pointer to a #gint or #guint

oldval int

the value to compare with

newval int

the value to conditionally replace with

Return: %TRUE if the exchange took place

Meta