Fixing one billion count with atomics

Now we know the reason for our garbage value, and, with atomics, it should be easy to fix the problem. Right? Wrong.

There is a massive performance penalty on using atomic locking a billion times. Let's look at our updated worker.js code now:

// worker.jslet sharedMem;addEventListener('message', ({data}) => {  //console.log(data);    if(data.message == 'sab') {        sharedMem = data.memory;        console.log('Memory ready');    }    if(data.cmd == 'start') {      console.log('Iterations ready');        startCounting(data.iterations);    }});function startCounting(limit) {    const arr = new Uint32Array(sharedMem);    for(let i=0;i<limit;i++) {        Atomics.add(arr, 0, 1);    }    postMessage('done')}

This is similar to our previous implementation of the ...

Get Learn ECMAScript - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.