1 of 5

Atomics.waitAsync

Shu-yu Guo for Lars Hansen

† Bloomberg LP

‡ Mozilla

2 of 5

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.

3 of 5

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

4 of 5

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

5 of 5

Stage 2?