私は、V8はマルチスレッドではなく、設計によるものではないことを読んでいました。
これは本当ですか?(node.jsで)同時に実行するようにスクリプトを最適化できるのに、同時実行性を複数のプロセッサーに拡張できないのは本当ですか?それがコンカレントデザインの主な理由だと思いました。
私は、V8はマルチスレッドではなく、設計によるものではないことを読んでいました。
これは本当ですか?(node.jsで)同時に実行するようにスクリプトを最適化できるのに、同時実行性を複数のプロセッサーに拡張できないのは本当ですか?それがコンカレントデザインの主な理由だと思いました。
Node v0.8 以降では、https://github.com/audreyt/node-webworker-threadsモジュールが同じ Web Worker API を提供するようになりました。これは、マルチコア スケジューリングを目的としたネイティブ スレッドで実装され、シリアライゼーションとワーカーの作成が少なくなります。プロセスベースの node-worker モジュールと比較したオーバーヘッド。
node.jsに関しては、並行ではなく非同期です。node.js のすべての IO を処理する 1 つのスレッドと 1 つのイベント ループがあります。
node.js には並行性のためのツールがいくつかありますが、それらは主に複数のプロセスを中心に展開します。しかし、すべての node.js と同様に、これらは開発の初期段階にあります。たとえば、fugueを使用して複数のワーカー プロセスを管理したり、 node-workerを使用しておなじみのWeb ワーカーAPI を使用したりできます。
実行時間の制限を参照してください。それは可能ですが、Javaと言うほど簡単である可能性がどれほどあるかはわかりません。
v0.6からクラスタ機能が使えるようになりました。
個別のノード プロセス間の通信にはオーバーヘッドが発生します。このため、v8 分離のサポートが検討されていましたが、最終的には不十分な改善と複雑さのトレードオフのために追求されませんでした。
(v8 分離により、プロセスの代わりにスレッドを使用できるようになり、より効率的な通信が可能になります。)