1つのスレッドがプロセスでクラッシュするとどうなりますか?

StackOverflow https://stackoverflow.com/questions/4605026

  •  25-09-2019
  •  | 
  •  

質問

私は2つのnoobの質問です:

1)Node.jsが単一のスレッドで実行されている理由なぜそれはプロセス自体を使用していませんか?または、プロセスの代わりにスレッドで実行することの利点は何ですか?

2)プロセスのスレッドがクラッシュした場合はどうなりますか(非ハンドルの例外がプロセスを終了することを知っています)が、適切にキャッチされた場合はどうなりますか?または、フローティングポイントの例外のような例外を除いて。プロセスもクラッシュしますか?

役に立ちましたか?

解決

この場合、「シングルスレッド」が何を意味するのかについて、あなたは少し混乱していると思います。 node.js自体は、バックグラウンドで複数のスレッドを使用して、それ以外の場合は非同期にブロックする呼び出しを処理します。

node.jsコア、JavaScriptエンジンはシングルスレッドです。マルチスレッドの欠如とイベントループの可用性により、プログラミングは非常に簡単になります。要するに、マルチスレッディングがもたらすすべての並行性の問題に対処する必要はありません。

スレッドがクラッシュした場合、これが唯一の唯一の1つであるか、多くのうちの1つであったかどうかは完全に無関係です。コードが期待できる最善のことは、プログラムが死ぬということです。プログラムを実行し続けることほど厄介なことはありません部分的に破損した状態。クラッシュがディスクにデータを保存する責任があるスレッドを想像してください。今、プログラムは再び保存せずに実行され続けています。

他のヒント

  1. node.jsは非常に軽量になるように設計されており、必要な場合にのみ呼び出されます。そのため、各スレッドは1つの要求を処理してから終了します。あなたが /mypageに電話すると、node.jsがリクエストを処理してから終了します。これにより、足跡をわずかに保ちながらパフォーマンスが向上します
  2. 例外があり、それが適切に処理されている場合、それはあなたがそれを定義した方法に応じてエラーを投げます。 JavaScriptはすべてまたは何も言語です。エラーが発生すると、JavaScriptがエラーとクラッシュをスローするため、すべての可能なエラーを処理することを確認する必要があります。

プロセスまたは単一のスレッドでプログラムを実行するのは同じことです。すべてのプロセスにはメインスレッドがあります。プログラミング言語とプラットフォームに応じて、追加のスレッドを使用してプログラムの一部を同時に実行できます。 node.jsには、追加のスレッドを起動する可能性はありません。

これにより、新しいプロセスを開始する以外に、プログラムのピースを並行して実行する可能性はありません。単一のプロセスの複数のスレッドは同じメモリを共有しますが、プロセスは共有しません。プロセス間で情報を共有する必要がある場合、メッセージの合格を使用する必要があります。

メッセージの合格の欠点は、メモリを通じて情報を共有するよりも遅いことです。利点は、メモリ内のオブジェクトの可変状態と、それらのオブジェクトが矛盾しないようにする方法について推論する必要がないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top