Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

Mutex

A lock-free single-owner resource.

atomic.Mutex
pub const Mutex = enum(u8)

File

lib/std/atomic.zig:509

Code

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);
    }
}