P99
#define P99_LIFO_PUSH (   L,
  EL 
)
Value:
p99_extension                                                        \
({                                                                   \
  P99_MACRO_VAR(p00_l, (L));                                         \
  P99_MACRO_VAR(p00_el, (EL));                                       \
  P99_MACRO_VAR(p00_prev, atomic_load(p00_l));                       \
  do {                                                               \
    p00_el->p99_lifo = p00_prev;                                     \
  } while (!atomic_compare_exchange_weak(p00_l, &p00_prev, p00_el)); \
})

Push element EL into an atomic LIFO L.

See also:
P99_LIFO_CLEAR
P99_LIFO_POP
P99_LIFO_TOP
Remarks:
argument 0 maybe evaluated several times for its type but only once for its value
argument 1 maybe evaluated several times for its type but only once for its value

Definition at line 54 of file p99_lifo.h.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines