2017-02-02 4 views
0

私はマシンが5つの異なるnodejsプロセスを実行しているとしましょう。各ノードプロセスは独自のlibuvスレッドプールを持っているか、それらはすべてグローバルスレッドプールを共有していますか?NodeJS - libuvスレッドプールはグローバルかプロセスごとですか?

私はスレッドプールをlibuv asumeたいので、私は混乱しているがプロセスごとですが、libuvのドキュメント(http://docs.libuv.org/en/latest/threadpool.html)で、それは言う:すべてのイベントは

ループ全体で

スレッドプールは、世界と共有しています

"すべてのイベントループ"が何を意味しているのか本当に分かりません。

私の例に戻ってください。私は5つのnodejsプロセスを持っている場合、および、libuvのデフォルトのスレッドプールのサイズが4であることを考えると、私が使用して終了の操作を行います。

a)は9つのスレッド:グローバルスレッドプール

ための5 nodejsイベントループ+ 4つのlibuvスレッドをb)25個のスレッド:5個のnodejsイベントループ+ 4個のスレッドを持つ5個の異なるスレッドプールを持つための(5 * 4)libuvスレッド。

c)上記のうちどれですか?

ありがとうございます!

答えて

2

ドキュメントに「すべてのイベントループ」と書かれているときは、同じプロセス内のすべてのlibuvイベントループを参照しています。参照される「グローバル」部分は、単一のプロセスの範囲内にあります。

libuvが任意の子プロセスと調整して、libuvを使用するすべてのプロセスの中で非常に多くのスレッドがシステム全体で使用されるようにする方法はありません。おそらくlibuvが利用しない設定ファイルなどが必要になるでしょう。

ノード・プロセスが5つの場合、各プロセスがデフォルトのlibuvスレッド・プール・サイズを使用していると仮定すると、合計で20個のlibuvスレッド(5プロセス* 4スレッド)があります。各プロセスは4つ以上のスレッドを持つことに注意してください。しかしそれらのすべてがlibuvスレッドではありません。たとえば、JavaScriptの実行に使用されるメインスレッドがありますが、V8がコード、ガベージコレクションなどのさまざまなタスクに使用するスレッドもあります。

+0

これは、その上に、GC、最適化、タイムアウト処理などがあります。ありがとうございます! – jotadepicas

+0

また、あなたのユーザー名からそのような郷愁!ハハ – jotadepicas

関連する問題