NodeJs体系结构有何不同?
有关于NodeJs架构的一些问题:
- 它说虽然NodeJs是单线程的,但在内部它使用libuv库的线程池? 这样对吗?
- 主线程处理的所有非阻塞请求和libuv线程池处理的所有阻塞请求? 一些人说,没有什么像主线程。 正确还是误解?
- 如果是的话,那么如果线程池大小是4并且阻塞请求是什么,请求5不得不等待直到线程可用? 这样对吗?
- 如果点3是这种情况,那么如果阻塞请求计数超过线程池大小,那么NodeJs与Java是不同的?
1.通常, libuv
和v8
都可以使用(并且实际上使用)线程。
作为一个经验法则,请注意单线程JavaScript运行时环境并不意味着底层库不能使用线程。
2.你可以参考libuv
的文档来知道将在线程上派发什么。
我引用它:
- 文件系统操作
- DNSfunction
- 用户指定的代码通过uv_queue_work()
据说你可以在线程池中排队工作 。
所以,是的,如果你排队更多的工作,你可以安排,请求将等待轮到运行。
4.线程池是一个从语言中抽象出来的概念。
在一天结束的时候, libuv
和node因此成为I / O绑定应用程序的良好目标,在这些应用程序中,您可以进行大量networking连接,并且API会清楚地说明这一点。