为什么Node.js只使用有限的线程会更快



我一直在学习Node.js,但我有一个问题在任何地方都找不到答案。以下是我对Node.js=>

  1. 它的体系结构是单线程的,由于其异步的基于非阻塞事件的循环,因此可以有效地利用CPU。

  2. 它如何执行这些异步请求是在内置库libuv的帮助下进行的,该库在其内部线程池中使用线程(默认为4个线程(。所有这些都远离";主";node.js使用的主线程。所以我们不必担心。

然而,我的问题是——假设一次有100个异步请求(比如说文件(。由于libuv使用的线程数量有限,node.js如何一次处理这100个异步请求?理想情况下,它应该有100个线程来处理这100个异步请求,以便将数据快速响应回事件队列。这个进程到底比多线程进程快多少?

这到底比多线程进程快多少?

简单的答案是,有时不是。没有任何平台/语言/编译器最适合所有可能的场景。

然而,有时速度更快。处理许多线程都有自己的问题(例如,线程共享CPU核心、线程死锁、竞争条件等(。在某些情况下,node的方法更快,因为它并没有处理这些问题的所有开销。在其他情况下,速度可能不会更快。

也就是说,如果你发现自己的CPU有限,你可以做一些事情(例如工作线程(,让你根据自己的情况定制node.js。这在web服务器上很常见,工作线程与CPU内核一样多。(或内核减1,为操作系统等留出空闲内核(

最新更新