Shared memory doesn't need to "sync", its the same memory. Atomics exists to 
provide primitives to help with timing (mostly race conditions). For example, 
if you want to update an index in a SharedArrayBuffer (SAB) so that another 
thread may read it, the safe way is to use Atomics.wait in the thread that will 
read from the SAB, and Atomics.store plus Atomics.notify in the thread that 
writes to the SAB. ---- On Sat, 22 Sep 2018 16:28:41 -0500 T.J. Crowder 
<[email protected]> wrote ---- Can anyone on the list help me 
with the shared memory details question described here: [Does `postMessage` or 
yielding to the event loop or similar sync shared memory?][1] It seems like 
Lars T. Hansen's Mandlebrot example [here][2] also expects memory to have been 
synchronized/updated as of the receipt of a `postMessage` message (when a 
worker is done, it triggers a `workerDone` message making the main thread 
redisplay), but there's an `Atomics.store` involved there. Just trying to get a 
clear idea of when (and whether) one can reliably, in-specification trust that 
a thread will see updates from other threads without using `Atomics.load` or 
similar to do every single read. Hansen's Mandlebrot example uses a lock on a 
single element via `compareExchange`. My experiment that never sees a stale 
read doesn't use `Atomics` at all (but see the first link above for details). 
Thanks in advance, -- T.J. Crowder [1]: 
https://stackoverflow.com/questions/52445807/does-postmessage-or-yielding-to-the-event-loop-or-similar-sync-shared-memory
 [2]: 
https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/
 _______________________________________________ es-discuss mailing list 
[email protected] https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to