我有两个noob问题:
1)为什么node.js在一个线程中运行?为什么不只是使用过程本身? 或者在线程而不是进程中运行它有什么好处?
2)如果进程中的线程崩溃会发生什么(我知道,未处理的异常会导致进程退出),但是如果它正确捕获会发生什么?或者像浮点异常这样的例外。 这个过程也会崩溃吗?
答案 0 :(得分:3)
我认为你对“单线程”在这种情况下意味着什么感到困惑。 Node.js本身在后台利用多个线程以异步方式处理阻塞调用。
Node.js核心,即JavaScript引擎,是单线程的。缺乏多线程和事件循环的可用性使得编程变得更加容易。简而言之,您不必处理多线程带来的所有并发问题,因此您的代码更具确定性。
如果线程崩溃,那么这是唯一的一个还是其中之一完全不相关,如果代码崩溃了你可以希望的最好的东西就是程序就死了,没有什么比你继续编程更麻烦了以部分损坏的状态运行。想象一下崩溃的线程负责将数据保存到磁盘,现在你的程序继续运行而不再保存。
答案 1 :(得分:0)
答案 2 :(得分:0)
在进程或单线程中运行程序是一回事。每个进程都有一个主线程。根据编程语言和平台,可以使用其他线程同时运行程序的某些部分。 Node.js无法启动其他线程。
这样,除了启动新进程之外,您无法并行运行程序的各个部分。单个进程中的多个线程共享相同的内存,而进程则不共享。当您需要在进程之间共享信息时,您必须使用消息传递。
消息传递的缺点是它比通过内存共享信息慢。优点是您不必推断内存中对象的可变状态,以及如何确保这些对象不会变得不一致。