私の個人的な観点から、並列コンピューティングがフロントエンド JavaScript をどのようにサポートするかについて推測してみましょう。
1 ありそうもない進化
サポートされている場合。現在のブラウザは、ブラウザの UI スレッドで Javascript を解析して実行します。
たとえば、JavaScript で while(true) を実行すると、ブラウザのインターフェイスが応答しなくなります。 (JavaScript のスリープ機能を提供するための Javascript エンジンのコンパイル: http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html)
さらに、UI インターフェイスがブロックされるプロセスを理解します。ディスプレイがスレッドをサポートしている場合、スレッド間のデータ同期の同期プリミティブ機能もサポートします。その場合、次のような問題が発生します。
関数でロックを取得し、別の関数でロックが解放されます。別の関数が失敗したり、別の関数が別のファイルから参照されたり、何らかの理由 (ネットワークの問題、エンコーディングの問題) でファイルがロードされなかった場合、デッドロックが発生します。
上記の理由により、JavaScript で表示スレッドをサポートすることは現実的ではありません。
2 進化の可能性があります。
不可視 次のコードは、並列演算 FOR ループを宣言します。 >
コードをコピー
a[i] = 2 * i;
このメソッドは、以前に発生したすべての問題を回避できます。そのため、JavaScript エンジンには、openMP や Intel TBB の内部呼び出しなどの並列操作を処理および最適化するためのスペースがより多くあります。
3 並列例外の処理
JavaScript コードは並列スレッド処理で暗黙的にホストされるため、スレッドの例外ステータスをすぐに取得できない可能性がありますが、一部のコードに例外があることはわかりません。
4 Debugger Evolution
は、スレッド認識をサポートし、各スレッドの情報を分析し、フリーズ/再開できる Javascript デバッガーを生成します。
もちろん、JavaScript スクリプトで書かれたデバッガも大幅に改善されるでしょうが、Visual Studio のようなローカル アプリケーション用のデバッガが主流になることがより理想的だと思います。 .
5 結論 並列コンピューティングは、Javascript で記述されたフロントエンド効果の多くを影響し、JavaScript ゲームのパフォーマンスに影響を与えます。
本当に待てない場合は、既存の JS エンジンをコンパイルして、並列コンピューティング インターフェイスを追加して、独自のブラウザを公開することもできます。マルチコア機能は引き続き使用できます。
ただし、現在の JavaScript 仕様に準拠している必要があります。互換性がない場合、他のブラウザーがコードを認識できないため、オリジナルのシリアル コードが必要です。 jsエンジン内で解析して正確である必要があり、並列コードに変換して最適化することもできますが、この作業はまだ非常に難しいと思います。