ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのプロセスとスレッドの違いは何ですか

JavaScriptのプロセスとスレッドの違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-06-09 17:13:043011ブラウズ

相違点: プロセスには独立したアドレス空間があります。プロセスがクラッシュした後、保護モードの他のプロセスには影響しません。スレッドはプロセス内の異なる実行パスにすぎません (プロセスは 1 つ以上で構成されます)スレッド)、スレッド間に個別のアドレス空間 (共有メモリ) はなく、1 つのスレッドの終了はプロセス全体の終了と同等です。

JavaScriptのプロセスとスレッドの違いは何ですか

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

スレッドは次の 2 つに分けられます: シングル スレッドとマルチスレッド

シングル スレッド: 実行中のプログラム (つまり実行中) には、少なくとも1 つのスレッド、このスレッドはメイン スレッドと呼ばれます。メイン スレッドが 1 つだけあるプログラムは、シングル スレッド プログラムと呼ばれます。メイン スレッドは、すべてのコード (UI の表示と更新、ネットワーク リクエスト、ローカル ストレージなど) の実行を担当します。これらのコードは順次にのみ実行でき、同時に実行することはできません。

マルチスレッド: 複数のスレッドを持つプログラムは、マルチスレッド プログラムと呼ばれます。メイン スレッドは、複数のサブスレッドを開くことができます。サブスレッドとメイン スレッドは、独立した実行単位です。それぞれの実行相互に影響を与えず、同時に実行できます。

シングルスレッドとマルチスレッドの違い:

シングルスレッド: スレッドは 1 つだけあり、コードは順番に実行されます。コード ブロッキング (ページ一時停止アニメーションが発生しやすくなります) );

マルチスレッド: 複数のスレッドを持ち、スレッド間で独立して実行することで、コード ブロッキングを効果的に回避し、コードの実行パフォーマンスを向上させることができます。

プロセス定義: プロセスは進行中のプログラムであり、動的な概念です。これは、システムにおけるリソースの割り当てとスケジューリングの基本単位です。

プロセスとスレッドの違い:

プログラムには少なくとも 1 つのプロセスが含まれ、プロセスには少なくとも 1 つのスレッドが含まれます。

マルチプロセスは独立したメモリを持ち、マルチスレッドはメモリを共有するため、マルチスレッドによって動作効率が向上します;

マルチスレッドの重要性は、複数のプログラムを同時に実行できることです。ただし、システムはマルチスレッドを複数の独立したアプリケーションとはみなしません。

深い理解:

例:

1. コンピューターの核となるのは CPU です。 、すべてのコンピューティング タスクを担当します。常に稼働している工場のようなものです。

2. 工場の電力は限られており、一度に 1 つの作業場にしか供給できないと仮定します。言い換えれば、1 つのワークショップが動作し始めると、他のワークショップは動作を停止する必要があります。その背後にある意味は、1 つの CPU は一度に 1 つのタスクしか実行できないということです。

3. プロセスは工場現場のようなもので、CPU が処理できる単一のタスクを表します。 CPU は常に 1 つのプロセスを実行しており、他のプロセスは非実行状態になります。

4. 作業場には多くの作業者がいる場合があります。彼らは協力してミッションを完了します。

5. スレッドはワークショップの労働者のようなものです。プロセスには複数のスレッドを含めることができます。

6. 作業場内の空間は作業者間で共有されており、例えば多くの部屋に作業者全員が出入りできます。これは、プロセスのメモリ空間が共有され、各スレッドがこれらの共有メモリを使用できることを象徴しています。

7. ただし、各部屋の広さが異なり、トイレなど最大1名しか宿泊できない部屋もあります。中に人がいる場合は他の人は中に入ることができません。これは、スレッドが共有メモリを使用する場合、他のスレッドはそのメモリを使用する前に共有メモリの終了を待つ必要があることを意味します。

8. 他人の侵入を防ぐ簡単な方法は、ドアに鍵を追加することです。先に到着した人はドアに鍵をかけ、後から到着した人は鍵を見てドアの前に並び、鍵が開くのを待って中に入りました。これは

「相互排他ロック」 (相互排他、略して Mutex) と呼ばれ、複数のスレッドが特定のメモリ領域を同時に読み書きできないようにします。

9. キッチンなど、同時にn人が宿泊できる部屋もあります。つまり、人数がn人より多い場合、余った人は外で待つしかありません。これは、固定数のスレッドのみが使用できるメモリ領域のようなものです。

10. 現時点での解決策は、ドアに n 個の鍵を掛けることです。入った人は鍵を受け取り、出てくるときにその鍵を掛け直します。後から到着した人たちは、鍵が空であることに気づき、ドアのところで列に並ばなければならないことを悟りました。このアプローチは "セマフォ" (セマフォ) と呼ばれ、複数のスレッドが互いに競合しないようにするために使用されます。ミューテックスがセマフォの特殊なケース (n=1 の場合) であることを理解するのは難しくありません。言い換えれば、後者は前者を完全に置き換えることができます。ただし、ミューテックスは比較的シンプルで効率的であるため、この設計はリソースの排他性を保証する必要がある場合に引き続き使用されます。

11. オペレーティング システムの設計は、次の 3 つのポイントに要約できます。

(1) マルチプロセスの形式では、複数のタスクを同時に実行できます。

(2) マルチスレッドの形式では、単一のタスクをさまざまな部分に分割して実行することができ、リソースを共有できます。

プロセスとスレッドの主な違いは、オペレーティング システムのリソース管理方法が異なることです。プロセスには独立したアドレス空間があり、プロセスがクラッシュしても保護モードの他のプロセスには影響せず、スレッドはプロセス内の異なる実行パスにすぎません。

スレッドには独自のスタックとローカル変数がありますが、スレッド間に個別のアドレス空間はありません。1 つのスレッドの終了はプロセス全体の終了を意味するため、マルチプロセス プログラムはマルチスレッドよりも堅牢です。プロセスを切り替えると、より多くのリソースが消費され、効率が低下します。

ただし、同時操作と特定の変数の共有を必要とする一部の同時操作では、プロセスではなくスレッドのみを使用できます。

プログラミング関連の知識について詳しくは、
プログラミング ビデオ

をご覧ください。 !

以上がJavaScriptのプロセスとスレッドの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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