Я могу написать неблокирующий I/O в Node.js очень легко. Это то, для чего настроена вся библиотека.
Но любые сделанные вычисления блокируют. Любое сообщение, проходящее через блокирует события.
Например, излучающие события немедленно устраняются и блокируются таким образом:
var e = new process.EventEmitter;
e.on("foo", function() {
console.log("event");
});
process.nextTick(function() {
console.log("next tick");
});
setTimeout(function() {
console.log("timeout");
}, 0);
e.emit("foo");
> event
> next tick
> timeout
Помимо переноса вызовов в nextTick
, как сделать код неблокирующим?
Я хочу сделать как можно меньше вычислений за цикл цикла событий, чтобы я мог обслуживать как можно больше клиентов.
Как написать мой код неблокирующим способом?
И когда у меня есть неблокирующий код, как мне масштабировать его для нескольких процессов?
Один параметр ожидает завершения API-интерфейса суб-процесса WebWorker.