ホームページ > 記事 > ウェブフロントエンド > JavaScript エンジンはシングルスレッドですか?
JavaScript エンジンはシングルスレッドです。JavaScript の主な目的は、ユーザーと対話して DOM を操作することです。たとえば、複雑な同期の問題を回避して、同時に 1 つのことしか実行できないようにするためです。したがって、JavaScript はシングルスレッドです。
このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript エンジンはシングルスレッドです。
JS はなぜシングルスレッドですか?なぜ非同期が必要ですか?シングルスレッドはどのようにして非同期を実現しますか?
テクノロジーの出現は、現実世界のアプリケーション シナリオと密接に関係しています。
同様に、実際のシナリオに基づいて質問に答えます
(1) JS はなぜシングルスレッドですか?
シングルスレッド: 同じ 一度に実行できるのは 1 つのことだけです。
JavaScript の単一スレッドは、その目的に関連しています。ブラウザーのスクリプト言語としての JavaScript の主な目的は、ユーザーと対話して DOM を操作することです。これにより、シングルスレッドのみが可能であることが決まります。そうでない場合は、非常に複雑な同期の問題が発生します。たとえば、JavaScript に同時に 2 つのスレッドがあるとします。1 つのスレッドは特定の DOM ノードにコンテンツを追加し、もう 1 つのスレッドはノードを削除します。この場合、ブラウザはどちらのスレッドを使用する必要がありますか?
マルチコア CPU のコンピューティング能力を活用するために、HTML5 は Web Worker 標準を提案しています。これにより、JavaScript スクリプトは複数のスレッドを作成できますが、子スレッドはメインスレッドによって完全に制御されるため、 DOM を操作しないでください。したがって、この新しい標準は JavaScript のシングルスレッドの性質を変更しません。
JS は元々ブラウザで使用するように設計されているため、ブラウザ内の JS がマルチスレッドである場合を想像してください。
シナリオの説明:
つまり、プロセス 1 とプロセス 2 の 2 つのプロセスが存在します。マルチプロセス JS であるため、これらは同時に同じ dom 上で動作します
process1 の削除 DOM を編集し、プロセス 2 で DOM を編集し、相反するコマンドを 2 つ同時に発行します。ブラウザはそれをどのように実行すればよいでしょうか?
こうして考えると、なぜ JS を使用するのかが容易に理解できるはずです。シングルスレッドになるように設計されています。
(2) なぜ JS に非同期が必要なのでしょうか?
シーンの説明:
JS に非同期が存在しない場合は、からのみ実行できます。前の行の解析に時間がかかる場合、以下のコードはブロックされます。
ユーザーにとって、ブロックは「スタック」を意味し、ユーザー エクスペリエンスの低下につながります。
そのため、JS には非同期実行があります。
関連する推奨事項: JavaScript 学習チュートリアル
以上がJavaScript エンジンはシングルスレッドですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。