@@ -30,10 +30,13 @@ void of_once(of_once_t *control, void (*func)(void)) { if (of_atomic_int_cmpswap(control, 0, 1)) { func(); + + of_memory_barrier(); + of_atomic_int_inc(control); } else while (*control == 1) of_thread_yield(); }