TGViewer
WebCraft - ремесло веб разработки WebCraft - ремесло веб разработки @web_craft · 5.02K subscribers
Post #3713 710
Асинхронная координация потоков

SharedArrayBuffer можно создавать с изменяемым размером, указав опцию maxByteLength и вызывая метод resize(). Для координации потоков без блокировок предназначен Atomics.waitAsync(). Он асинхронно ожидает, пока другой поток изменит значение в указанной ячейке памяти. После изменения worker вызывает Atomics.notify().

// Главный поток
const sab = new SharedArrayBuffer(1024, { maxByteLength: 4096 });
const int32 = new Int32Array(sab);

console.log('Ожидаем изменения от воркера...');
const asyncWait = Atomics.waitAsync(int32, 0, 0); // Ждем, пока значение в 0-м индексе станет не 0

asyncWait.promise.then((result) => {
console.log('Ожидание завершено:', result); // 'ok'
console.log('Новый размер буфера:', sab.byteLength);
});

// Код, который мог бы быть в воркере (worker.js)
/*
// ... получает sab и int32 ...
// Растит буфер
sab.resize(2048);
// Обновляет флаг
Atomics.store(int32, 0, 1);
// Уведомляет главный поток
Atomics.notify(int32, 0);
*/


👉 @web_craft | #frontend
  • ❤ 4
More from @web_craft
  1. Sep 30, 2026Post #3898
  2. Sep 18, 2026Собрали статический сайт. А дальше что? Привычные хостинги для статических сайтов вроде Cl…
  3. May 11, 2026Scroll-driven анимации в CSS постепенно выходят на новый уровень. Раньше для анимаций при…
  4. Jan 9, 2026Post #3797
  5. Jan 9, 2026Параллельное выполнение заданий в очередях Какой метод в Laravel позволяет объединять зада…
  6. Dec 5, 2025И он терпит наши глупости и мы его глупости тоже потерпим. 👉 @web_craft |#юмор
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →