ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript エンジンはシングルスレッドですか?

JavaScript エンジンはシングルスレッドですか?

WBOY
WBOYオリジナル
2022-03-03 10:35:371627ブラウズ

JavaScript エンジンはシングルスレッドです。JavaScript の主な目的は、ユーザーと対話して DOM を操作することです。たとえば、複雑な同期の問題を回避して、同時に 1 つのことしか実行できないようにするためです。したがって、JavaScript はシングルスレッドです。

JavaScript エンジンはシングルスレッドですか?

このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript エンジンはシングルスレッドですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。