ホームページ > ウェブフロントエンド > jsチュートリアル > Javascript並列演算実装コード_JavaScriptスキル

Javascript並列演算実装コード_JavaScriptスキル

WBOY
リリース: 2016-05-16 18:16:01
オリジナル
920 人が閲覧しました

私の個人的な観点から、並列コンピューティングがフロントエンド JavaScript をどのようにサポートするかについて推測してみましょう。

1 ありそうもない進化

サポートされている場合。現在のブラウザは、ブラウザの UI スレッドで Javascript を解析して実行します。
たとえば、JavaScript で while(true) を実行すると、ブラウザのインターフェイスが応答しなくなります。 (JavaScript のスリープ機能を提供するための Javascript エンジンのコンパイル: http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html)
さらに、UI インターフェイスがブロックされるプロセスを理解します。ディスプレイがスレッドをサポートしている場合、スレッド間のデータ同期の同期プリミティブ機能もサポートします。その場合、次のような問題が発生します。
関数でロックを取得し、別の関数でロックが解放されます。別の関数が失敗したり、別の関数が別のファイルから参照されたり、何らかの理由 (ネットワークの問題、エンコーディングの問題) でファイルがロードされなかった場合、デッドロックが発生します。
上記の理由により、JavaScript で表示スレッドをサポートすることは現実的ではありません。


2 進化の可能性があります。

不可視 次のコードは、並列演算 FOR ループを宣言します。 >



コードをコピー

コードは次のとおりです: #pragma ompParallel for for (i = 0; i < N i )
a[i] = 2 * i;


このメソッドは、以前に発生したすべての問題を回避できます。そのため、JavaScript エンジンには、openMP や Intel TBB の内部呼び出しなどの並列操作を処理および最適化するためのスペースがより多くあります。

3 並列例外の処理


JavaScript コードは並列スレッド処理で暗黙的にホストされるため、スレッドの例外ステータスをすぐに取得できない可能性がありますが、一部のコードに例外があることはわかりません。

4 Debugger Evolution

は、スレッド認識をサポートし、各スレッドの情報を分析し、フリーズ/再開できる Javascript デバッガーを生成します。
もちろん、JavaScript スクリプトで書かれたデバッガも大幅に改善されるでしょうが、Visual Studio のようなローカル アプリケーション用のデバッガが主流になることがより理想的だと思います。 .

5 結論


並列コンピューティングは、Javascript で記述されたフロントエンド効果の多くを影響し、JavaScript ゲームのパフォーマンスに影響を与えます。
本当に待てない場合は、既存の JS エンジンをコンパイルして、並列コンピューティング インターフェイスを追加して、独自のブラウザを公開することもできます。マルチコア機能は引き続き使用できます。

ただし、現在の JavaScript 仕様に準拠している必要があります。互換性がない場合、他のブラウザーがコードを認識できないため、オリジナルのシリアル コードが必要です。 jsエンジン内で解析して正確である必要があり、並列コードに変換して最適化することもできますが、この作業はまだ非常に難しいと思います。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート