#include "kstd/mutex" namespace kstd { auto mutex::lock() -> void { while (!try_lock()) { asm volatile("nop"); } } auto mutex::try_lock() -> bool { return !locked.exchange(true, std::memory_order_acquire); } auto mutex::unlock() -> void { locked.store(false, std::memory_order_release); } } // namespace kstd