P99
|
◆ P99_DECLARE_INIT_ONCE
Value:
\
struct NAME { \
p99_once_flag p00_once; \
T p00_val; \
}; \
P99_DECLARE_STRUCT(NAME); \
p99_inline \
void P99_PASTE3(p00_, NAME, _init_func)(T* ARG); \
p99_inline \
void P99_PASTE3(p00_, NAME, _init_once)(NAME* ARG) { \
if (P99_UNLIKELY(!ARG->p00_once.p00_done.p00_done)) \
do { \
P99_SPIN_EXCLUDE(&ARG->p00_once.p00_flg) { \
if (!ARG->p00_once.p00_done.p00_vdone) { \
P99_PASTE3(p00_, NAME, _init_func)(&ARG->p00_val); \
ARG->p00_once.p00_done.p00_vdone = true; \
} \
} \
} while (!ARG->p00_once.p00_done.p00_vdone); \
} \
p99_inline \
void P99_PASTE3(p00_, NAME, _init_func)(T* ARG)
Definition at line 75 of file p99_threads.h. |