#include "core/thread/SpinLock.hpp" #include Core::SpinLock::SpinLock() : locked() { atomic_init(&locked, false); } void Core::SpinLock::lock() { while(true) { bool expected = false; if(atomic_compare_exchange_weak(&locked, &expected, true)) { break; } timespec s{0, 0}; thrd_sleep(&s, nullptr); } } void Core::SpinLock::unlock() { atomic_store(&locked, false); }