tiny.simd.SpinMonitorX
Defined in thread.spin.
API (3)
Actions
Public operations.
Source
Source: lib/simd/src/thread/spin.zig:52
zig
pub const SpinMonitorX = struct { pub fn spinType(_: SpinMonitorX) SpinType { return .monitor_x; } pub fn untilDifferent( _: SpinMonitorX, previous: u32, watched: *const std.atomic.Value(u32), ) SpinResult { if (comptime !haveMonitorX()) { 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, }; } monitorX(&watched.raw); current = watched.load(.acquire); if (current != previous) { return .{ .value = current, .repetitions = repetitions, }; } waitX(); } } pub fn untilEqual( _: SpinMonitorX, expected: u32, watched: *const std.atomic.Value(u32), ) usize { if (comptime !haveMonitorX()) { return (SpinPause{}).untilEqual(expected, watched); } var repetitions: usize = 0; while (true) : (repetitions +%= 1) { var current = watched.load(.acquire); if (current == expected) return repetitions; monitorX(&watched.raw); current = watched.load(.acquire); if (current == expected) return repetitions; waitX(); } }};Source: lib/simd/src/root.zig:122
zig
pub const SpinMonitorX = thread.SpinMonitorX;Also reachable as
Audit
| Definitions | 4 |
|---|---|
| Public names | 12 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |