- node.js が内部的に libeio を使用して、*nix プラットフォームでスレッド プールを使用して非同期ファイルI/O を実行することを知りました。
- 非同期ネットワークI/O はどうですか? それはlibevによって行われますか?スレッドプールもありますか?
- 内部にスレッド プールがある場合、従来のリクエストごとに 1 スレッドのモデルよりも効率的である可能性はありますか? また、I/O 要求ごとに 1 つのスレッドですか?
- そして、窓のメカニズムは何ですか?IOCP によって行われ、カーネル レベルのスレッド プールがあることは知っていますよね?
- Windows IOCP のようなネイティブの完全な AIO メカニズムがまだ Linux にないのはなぜですか? 将来的にはありますか?
Changchang の回答に従って更新します。
- @changchang が提供したソース コードを簡単に確認したところ、デフォルトのスレッド プール サイズはUV_THREADPOOL_SIZEでリセットできることがわかりました。
- また、getaddrinfo がこのスレッド プールを使用していることがわかりました。fs 以外に他にあるでしょうか。また、すべての同期ジョブがこのスレッド プールで実行される場合、既定のサイズ '4' で十分ですか?
- 私の理解では、node.js プロセスには 6 つの基本的なスレッドがあります: 1 つの V8 スレッド (ユーザー JavaScript コードが実行されるイベント ループ)、1 つの libuv イベント ループ、およびスレッド プールに 4 つですよね?
そして、シェル(Ubuntu)でこれらのスレッドを確認するにはどうすればよいですか? ps -eLf |を使用します。grep ノード | grep -v grep では次の 2 つしか表示されませんでした。
ルート 16148 7492 16148 0 2 20:43 pts/26 00:00:00 ./bin/node /home/aaron/workspace/test.js
ルート 16148 7492 16149 0 2 20:43 pts/26 00:00:00 . /bin/node /home/aaron/workspace/test.js