NodeJs架构有何不同?

时间:2017-12-06 06:01:38

标签: node.js

对NodeJs架构有一些疑问:

  1. 虽然NodeJs是单线程的,但在内部它使用libuv库的线程池?是不是?
  2. 主线程处理的所有非阻塞请求和libuv线程池处理的所有阻塞请求?虽然有人说没有像主线程那样的东西。是对还是误解?
  3. 如果是,那么如果线程池大小为4且阻塞请求是,则会发生什么 请求No 5必须等到线程可用?是不是?
  4. 如果是第3点,那么如果阻塞请求数超过线程池大小,NodeJs与Java的区别如何?

1 个答案:

答案 0 :(得分:0)

1。 通常,libuvv8都允许使用(实际上是使用)线程 根据经验,请注意单线程JavaScript运行时环境并不意味着底层库不能使用线程。

2。 您可以参考libuv的{​​{3}}来了解将在线程上发送的内容 我引用它:

  • 文件系统操作
  • DNS功能
  • 用户指定的代码,通过uv_queue_work()

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

4。 线程池是一种从语言中抽象出来的概念 在一天结束时,libuv因此节点很适合I / O绑定的应用程序,在这些应用程序中,您进行了大量的网络连接,并且API明确说明了它。