qb_atomic_pointer_compare_and_exchange - Man Page

Compares oldval with the pointer pointed to by atomic and if they are equal, atomically exchanges *atomic with newval.


#include <qb/qbatomic.h>

int32_t qb_atomic_pointer_compare_and_exchange(
    volatile void *QB_GNUC_MAY_ALIAS   *atomic,
    void                               *oldval,
    void                               *newval


atomic a pointer to a void*

oldval the assumed old value of *atomic

newval the new value of *atomic


Also acts as a memory barrier.

Return Value

QB_TRUE if atomic was equal oldval, else QB_FALSE.

See Also

qb_atomic_int_set(3), qb_atomic_int_compare_and_exchange(3), qb_atomic_int_get(3), qb_atomic_int_add(3), qb_atomic_init(3), qb_atomic_pointer_get(3), qb_atomic_int_exchange_and_add(3), qb_atomic_pointer_set(3)

Referenced By

qbatomic.h(3), qb_atomic_init(3), qb_atomic_int_add(3), qb_atomic_int_compare_and_exchange(3), qb_atomic_int_exchange_and_add(3), qb_atomic_int_get(3), qb_atomic_int_set(3), qb_atomic_pointer_get(3), qb_atomic_pointer_set(3).

2021-03-03 libqb Programmer's Manual