fn wait(ptr: *Run, val: Run, io: std.Io) error 1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815 fn wait(ptr: *Run, val: Run, io: std.Io) error{Canceled}!void {
assert(val.pad == 0);
while (true) {
// This cannot load a previous value since this thread previously loaded the
// latest value.
const prev = @atomicLoad(Run, ptr, .acquire);
assert(prev.pad == 0);
if (prev == val) break;
try io.futexWait(Run, ptr, prev);
}
}