Atomics.wait - `while (true)` или рекурсивная функция без вывода на stdoutJavascript

Форум по Javascript
Ответить
Anonymous
 Atomics.wait - `while (true)` или рекурсивная функция без вывода на stdout

Сообщение Anonymous »

Я стараюсь чувствовать себя комфортно с Atomics in node.js.
для этого я создал очень простой тест с 2 рабочими потоками. PrettyPrint-Override ">

Код: Выделить всё

const { Worker } = require('node:worker_threads');

const shared = new SharedArrayBuffer(4);
const sync = new Int32Array(shared);
sync[0] = 0;

new Worker('./waiter.js', { workerData: shared });
new Worker('./notifier.js', { workerData: shared });
waiter.js

Код: Выделить всё

const { workerData } = require('node:worker_threads');
const sync = new Int32Array(workerData);

let last = 0;

setInterval(() => {
//while (true) {

console.log('[waiter] Waiting for', last);

Atomics.wait(sync, 0, last);
last = Atomics.load(sync, 0);

console.log('[waiter] Woke up! New value:', last);
//}
}, 0);
nonotifier.js

Код: Выделить всё

const { workerData } = require('node:worker_threads');
const sync = new Int32Array(workerData);

let value = 1;

setInterval(() => {

console.log('[notifier] Stored and notifying');
Atomics.store(sync, 0, value++);
Atomics.notify(sync, 0);

}, 1000);
Проблема, с которой я столкнулся, с while (true) У официанта я не получаю вывода. Нет консоли.log, ничего. С SetInterval он печатается в Stdout.

Код: Выделить всё

const { workerData } = require('node:worker_threads');
const sync = new Int32Array(workerData);

let last = 0;

function loop() {

console.log('[waiter] Waiting for', last);

Atomics.wait(sync, 0, last);
last = Atomics.load(sync, 0);

console.log('[waiter] Woke up! New value:', last);

loop();

}

loop();
Может ли кто -нибудь сказать мне, почему, я не получаю вывода на stdout, когда я использую что -то другое, кроме setInterval ?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -on-stdout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»