2つの質問があります:プロセス内で1つのスレッドがクラッシュするとどうなりますか?
1)node.jsが1つのスレッドで実行されているのはなぜですか?それは単にプロセス自体を使用するのはなぜですか? または、プロセスではなくスレッドで実行する利点は何ですか?
2)プロセス内のスレッドがクラッシュした場合(処理されない例外によってプロセスが終了することに気付いていますが)、正しくキャッチされた場合はどうなりますか?または浮動小数点例外のような例外が発生します。 プロセスもクラッシュしますか?
2つの質問があります:プロセス内で1つのスレッドがクラッシュするとどうなりますか?
1)node.jsが1つのスレッドで実行されているのはなぜですか?それは単にプロセス自体を使用するのはなぜですか? または、プロセスではなくスレッドで実行する利点は何ですか?
2)プロセス内のスレッドがクラッシュした場合(処理されない例外によってプロセスが終了することに気付いていますが)、正しくキャッチされた場合はどうなりますか?または浮動小数点例外のような例外が発生します。 プロセスもクラッシュしますか?
この場合、「シングルスレッド」とは少し混乱していると思います。 Node.js自体はバックグラウンドで複数のスレッドを使用し、それ以外は非同期で呼び出しをブロックします。
JavaScriptエンジンであるNode.jsコアはシングルスレッドです。マルチスレッドの欠如とイベントループの可用性により、プログラミングがずっと簡単になります。要するに、マルチスレッド化がもたらしているすべての並行性の問題に対処する必要はありません。この方法では、コードはずっと決定的になります。
スレッドがクラッシュする場合は、これが唯一のものかどうかはまったく関係がありません。コードがクラッシュすると、プログラムが終了することが期待できる最高のものです。プログラムするよりも面倒です部分的に壊れた状態で走り続ける。クラッシュしたスレッドがデータをディスクに保存する責任があったとしたら、今度はプログラムを保存せずに実行し続けるとします。
プロセスまたはシングルスレッドでプログラムを実行することは同じことです。すべてのプロセスにはメインスレッドがあります。プログラミング言語とプラットフォームによっては、追加のスレッドを使用してプログラムの一部を同時に実行することができます。 Node.jsは追加のスレッドを開始する可能性がありません。
このようにして、新しいプロセスを開始するだけでなく、プログラムを並列に実行することもできません。単一のプロセス内の複数のスレッドは、同じメモリを共有しますが、プロセスは共有しません。プロセス間で情報を共有する必要がある場合は、メッセージパッシングを使用する必要があります。
メッセージが通過することの短所は、メモリを介して情報を共有するよりも遅いということです。利点は、メモリ内のオブジェクトの可変状態について推論する必要がなく、それらのオブジェクトが矛盾しないようにする方法です。