atomicPointerExchange

Sets the atomic to newval and returns the old value from atomic.

This exchange is done atomically.

Think of this operation as an atomic version of { tmp = *atomic; *atomic = val; return tmp; }.

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

void*
atomicPointerExchange
(
void* atomic = null
,
void* newval = null
)

Parameters

atomic void*

a pointer to a #gpointer-sized value

newval void*

the value to replace with

Return Value

Type: void*

the value of atomic before the exchange