NodeJS が単一のコアで実行されるという事実を知っています。しかし、マルチスレッドが実装された NodeJS C/C++ アドオンをビルドするとどうなりますか? このアドオンは複数のコアを消費しますか (想定されている場合)?
質問する
208 次
2 に答える
5
node.js は、Javascript インタープリターの実行に 1 つのスレッド/コアのみを使用します。
しかし、node.js は、C++ で実装されているさまざまなライブラリ関数またはアドオン関数 (ファイル I/O など) で複数のスレッド/コアを使用できます。実際、node.js がファイル I/O に使用する libuv ライブラリは、非同期のノンブロッキング ファイル I/O の実装の一部としてスレッド ポーリングを使用します。これは、Javascript インタープリターの「シングル スレッド化」には影響しませんが、非同期ファイル I/O などの外部関数の実装に役立ちます。
そのため、アドオンが C++ で複数のスレッドを使用している場合、それで問題ありません。Javascript インタープリターを実行している 1 つのメイン スレッドと通信する必要があります。
しかし、マルチスレッドが実装された NodeJS C/C++ アドオンをビルドするとどうなりますか?
C++ アドオンは、必要に応じて、その実装で複数のスレッドを自由に使用できます。複数のスレッドが実行されている場合は、メインの Javascript スレッドとスレッドセーフな方法で通信する必要があります。
于 2015-12-03T16:47:20.337 に答える