Node.jsでノンブロッキングI/Oを非常に簡単に書くことができます。これは、ライブラリ全体が設定されているものです。
しかし、行われる計算はすべてブロッキングです。イベントエミッタを通過するメッセージはすべてブロックされています。
たとえば、発行イベントはすぐに解決されるため、次のようにブロックされます。
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
に、コードを非ブロッキングにするにはどうすればよいですか?
できるだけ多くのクライアントに同時にサービスを提供できるように、イベントループのサイクルごとの計算をできるだけ少なくしたいと思います。
ノンブロッキング方式でコードを書くにはどうすればよいですか?
また、非ブロッキングコードがある場合、それを複数のプロセスにスケーリングするにはどうすればよいですか?
1つのオプションは、WebWorkerサブプロセスAPIが終了するのを待っています。