Skip to documentation
SLOP

tiny.simd.SpinUMonitor

Reference tiny.simd SpinUMonitor

Defined in thread.spin.

API (3)

Actions

Public operations.

No direct callersNo direct callsthread.spinSpinUMonitor
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/simd/src/thread/spin.zig:106

zig
pub const SpinUMonitor = struct {    pub fn spinType(_: SpinUMonitor) SpinType {        return .u_monitor;    }    pub fn untilDifferent(        _: SpinUMonitor,        previous: u32,        watched: *const std.atomic.Value(u32),    ) SpinResult {        if (comptime !haveUMonitor()) {            return (SpinPause{}).untilDifferent(previous, watched);        }        var repetitions: u32 = 0;        while (true) : (repetitions +%= 1) {            var current = watched.load(.acquire);            if (current != previous) {                return .{                    .value = current,                    .repetitions = repetitions,                };            }            uMonitor(&watched.raw);            current = watched.load(.acquire);            if (current != previous) {                return .{                    .value = current,                    .repetitions = repetitions,                };            }            uWait();        }    }    pub fn untilEqual(        _: SpinUMonitor,        expected: u32,        watched: *const std.atomic.Value(u32),    ) usize {        if (comptime !haveUMonitor()) {            return (SpinPause{}).untilEqual(expected, watched);        }        var repetitions: usize = 0;        while (true) : (repetitions +%= 1) {            var current = watched.load(.acquire);            if (current == expected) return repetitions;            uMonitor(&watched.raw);            current = watched.load(.acquire);            if (current == expected) return repetitions;            uWait();        }    }};

Source: lib/simd/src/root.zig:123

zig
pub const SpinUMonitor = thread.SpinUMonitor;
Called byCallsNo direct callersprivate sourcelib.simd.src.thread.spinhaveUMonitorprivate sourcelib.simd.src.thread.spinuMonitorprivate sourcelib.simd.src.thread.spinuWaitSpinUMonitoruntilDifferent
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsNo direct callersprivate sourcelib.simd.src.thread.spinhaveUMonitorprivate sourcelib.simd.src.thread.spinuMonitorprivate sourcelib.simd.src.thread.spinuWaitSpinUMonitoruntilEqual
Static calls · unresolved targets: 0 · external targets: 1.

Also reachable as

thread.SpinUMonitor.

Audit

Definitions4
Public names12
Members0
Version26.7.0
Revisiondaab053ee433