Multithreading 如果进程中有一个线程崩溃,会发生什么情况?

Multithreading 如果进程中有一个线程崩溃,会发生什么情况?,multithreading,node.js,Multithreading,Node.js,我有两个问题: 1) 为什么node.js在单个线程中运行?为什么不直接使用流程本身呢? 或者在线程而不是进程中运行它有什么好处 2) 若进程中的线程崩溃了会发生什么(我知道,未处理的异常会导致进程退出),但若它被正确捕获了会发生什么?或者使用诸如浮点异常之类的异常。 这个过程也会崩溃吗 node.js的设计非常轻量级,仅在需要时调用。因此,每个线程处理一个请求,然后退出。如果调用/mypage,node.js将处理请求,然后终止。这样可以在保持较小占地面积的同时获得更好的性能 如果存在异常,并

我有两个问题:

1) 为什么node.js在单个线程中运行?为什么不直接使用流程本身呢? 或者在线程而不是进程中运行它有什么好处

2) 若进程中的线程崩溃了会发生什么(我知道,未处理的异常会导致进程退出),但若它被正确捕获了会发生什么?或者使用诸如浮点异常之类的异常。 这个过程也会崩溃吗

  • node.js的设计非常轻量级,仅在需要时调用。因此,每个线程处理一个请求,然后退出。如果调用/mypage,node.js将处理请求,然后终止。这样可以在保持较小占地面积的同时获得更好的性能
  • 如果存在异常,并且该异常得到了正确处理,那么它将根据您定义它的方式抛出一个错误。Javascript是全有或全无的语言。任何错误都会导致javascript抛出错误并崩溃,这就是为什么您需要确保处理所有可能的错误

  • 我认为您对“单线程”在本例中的含义有点困惑。Node.js本身在后台利用多个线程以异步方式处理阻塞调用

    JavaScript引擎Node.js核心是单线程的。多线程的缺乏和事件循环的可用性使得编程变得更加容易。简而言之,您不必处理多线程带来的所有并发性问题,这样您的代码就更具有确定性


    在一个线程崩溃的情况下,无论这是唯一的一个线程还是众多线程中的一个线程,都是完全不相关的,如果代码崩溃,那么最好的希望就是程序也随之死掉,没有什么比让程序继续在部分损坏的状态下运行更麻烦的了。想象一下,崩溃的线程负责将数据保存到磁盘,而现在您的程序继续运行而不再保存数据。

    在进程或单线程中运行程序是一样的。每个进程都有一个主线程。根据编程语言和平台的不同,可以使用其他线程并发运行部分程序。Node.js无法启动其他线程

    这样,除了启动新进程外,您不可能并行运行程序的各个部分。单个进程中的多个线程共享同一内存,而进程不共享。当需要在进程之间共享信息时,必须使用消息传递

    消息传递的缺点是它比通过内存共享信息慢。这样做的好处是,您不必考虑内存中对象的可变状态以及如何确保这些对象不会变得不一致