Atomics.waitAsync
Shu-yu Guo† for Lars Hansen‡
† Bloomberg LP
‡ Mozilla
Recap
Atomics.waitAsync(i32a, index, value, [timeout]) => result
result Promise resolving to "ok", "timed-out", or "not-equal".
Resolved by Atomics.wake on i32a and index.
Promises resolved FIFO
let p1 = A.waitAsync(i32a, idx, v);
let p2 = A.waitAsync(i32a, idx, v);
A.wake(i32a, idx, 1);
A.wake(i32a, idx, 1);
Agent 1
Agent 2
Atomics.wait cuts in line
let p = A.waitAsync(i32a, idx, v);
A.wait(i32a, idx, v);
A.wake(i32a, idx, 1); (1)
A.wake(i32a, idx, 1); (2)
Agent 1
Agent 2
Stage 2?