A lock-free single-owner resource.
pub const Mutex = enum(u8)
pub const Mutex = enum(u8) {
unlocked,
locked,
pub fn tryLock(m: *Mutex) bool {
return @cmpxchgStrong(Mutex, m, .unlocked, .locked, .acquire, .monotonic) == null;
}
pub fn unlock(m: *Mutex) void {
assert(@atomicLoad(Mutex, m, .unordered) == .locked);
@atomicStore(Mutex, m, .unlocked, .release);
}
}