多核多进程节点应用程序和单核单进程节点应用程序性能有什么区别

时间:2017-06-21 05:25:05

标签: node.js libuv

我很困惑libuv有线程池机制,使用多个进程的必要性是什么?

1 个答案:

答案 0 :(得分:0)

documentation说(强调我的):

  

libuv提供了一个线程池,可用于运行用户代码并在循环线程中获得通知。此线程池内部用于运行所有文件系统操作,以及 getaddrinfo和getnameinfo 请求。

总而言之,首先libuv在内部使用多个线程来运行阻塞操作,而不会阻塞循环(文件系统,DNS)。
其次,出于同样的原因,您可以或多或少地使用它们。想象一下,你有一个cpu绑定任务,你不知道/不想/不能拆分部分通过不同的滴答,你仍然可以产生一个线程(实际工作请求)并让它在一个单独的线程。这样,你的循环就不会在等待这些任务的停顿中。