Skip to content
Foxipa
Code Completion 12 Challenges

JavaScript Shared Memory — Code Completion

Practice SharedArrayBuffer and Atomics operations.

Challenge 1

Create shared storage

javascript Your answer
const buffer = ;
const result = buffer.byteLength;

Press Ctrl⌘Enter to check your answer

Challenge 2

Create a shared integer view

javascript Your answer
const buffer = new SharedArrayBuffer(4);
const values = ;
const result = values.length;

Press Ctrl⌘Enter to check your answer

Challenge 3

Store an integer atomically

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
const result = (values, 0, 7);

Press Ctrl⌘Enter to check your answer

Challenge 4

Load an integer atomically

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
Atomics.store(values, 0, 7);
const result = (values, 0);

Press Ctrl⌘Enter to check your answer

Challenge 5

Atomically increment a counter

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
const previous = (values, 0, 1);

Press Ctrl⌘Enter to check your answer

Challenge 6

Replace a shared value atomically

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
const previous = (values, 0, 9);

Press Ctrl⌘Enter to check your answer

Challenge 7

Conditionally replace a shared value

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
const previous = (values, 0, 1, 2);

Press Ctrl⌘Enter to check your answer

Challenge 8

Wake a waiting agent

javascript Your answer
const values = new Int32Array(new SharedArrayBuffer(4));
const count = (values, 0, 1);

Press Ctrl⌘Enter to check your answer

Challenge 9

Feature-detect Atomics.pause

javascript Your answer
const supported = typeof Atomics.pause === "function";
const hint = supported ?  : "unavailable";

Press Ctrl⌘Enter to check your answer

Challenge 10

Give a spin-loop hint when available

javascript Your answer
if (typeof Atomics.pause === "function") ;

Press Ctrl⌘Enter to check your answer

Challenge 11

Observe the return value

javascript Your answer
const result = Atomics.pause();
console.log();

Press Ctrl⌘Enter to check your answer

Challenge 12

Keep the synchronization protocol separate

javascript Your answer
if (typeof Atomics.pause === "function") Atomics.pause();
Atomics.store(values, 0, 1);

Press Ctrl⌘Enter to check your answer