NodeJs体系结构有何不同?

有关于NodeJs架构的一些问题:

  1. 它说虽然NodeJs是单线程的,但在内部它使用libuv库的线程池? 这样对吗?
  2. 主线程处理的所有非阻塞请求和libuv线程池处理的所有阻塞请求? 一些人说,没有什么像主线程。 正确还是误解?
  3. 如果是的话,那么如果线程池大小是4并且阻塞请求是什么,请求5不得不等待直到线程可用? 这样对吗?
  4. 如果点3是这种情况,那么如果阻塞请求计数超过线程池大小,那么NodeJs与Java是不同的?

1.通常, libuvv8都可以使用(并且实际上使用)线程。
作为一个经验法则,请注意单线程JavaScript运行时环境并不意味着底层库不能使用线程。

2.你可以参考libuv的文档来知道将在线程上派发什么。
我引用它:

  • 文件系统操作
  • DNSfunction
  • 用户指定的代码通过uv_queue_work()

据说你可以在线程池中排队工作
所以,是的,如果你排队更多的工作,你可以安排,请求将等待轮到运行。

4.线程池是一个从语言中抽象出来的概念。
在一天结束的时候, libuv和node因此成为I / O绑定应用程序的良好目标,在这些应用程序中,您可以进行大量networking连接,并且API会清楚地说明这一点。