关于NodeJs的单线程模式的理解的问题,请指正
额,其实之前已经有问过类似的一个问题: 在单线程的情况下,NodeJs是如何分发子任务去执行的? 当中各位的回答我也基本接受为:NodeJs的单线程模式,实际上开发模式上的单线程(也就是业务开发人员写的那部分JS部分);而NodeJs的底层,实际上他也还是多线程,并且是优化过的多线程。 但是,现在在看书的时候又一个问题继续来困扰了。。这句话是这么说的:
无法利用多核提高性能 由于Node.js是单线程的,一个进程只能利用一个CPU 核心。当请求大量到来时,单线程就成为了提高吞吐量的瓶颈。随着多核乃至众核时代的到来,只能利用一个核心所带来的浪费是十分严重的,我们需要使用多进程来提高系统的性能。
那么,这句话很明显说的已经不再是业务开发人员的单线程模型,而是运行时了啊!又一次陷入理解的迷茫中,求点解。。
原文出自《Node.Js开发指南》 人民邮电出版社 作者 BYVoid Page145 (网上应该都下得到电子书)
3 回复
你的理解是没错的,这段话写得有些问题,意思应该就是说业务部分的代码无法利用多核
NODEJS是 一个单核心的LOOP模型。
NodeJs的底层,实际上他也还是多线程,并且是优化过的多线程?如果是这样那不就已经是利用多核了吗?如果是这样那还用cluster干嘛?坐等大神回答。