标签:高并发 机制 基本 16px event 代码 非阻塞 需要 第一个
nodejs为什么是单线程且支持高并发的脚本语言呢?
1.node的优点:I/O密集型处理(node的I/O请求都是异步的,如:sql查询、文件流操作、http请求……);异步I/O?
顾名思义就是异步的发出I/O请求
2.node的缺点:不擅长cpu密集型的操作(因为nodejs是单线程的)。
即复杂的运算、图片的操作等。
要理解node的原理,可能还需要了解一些多线程或者并发的基本知识。
nodejs的单线程指的是主线程是“单线程”,由主线程去按照编码顺序一步步执行程序代码,假如遇到同步代码阻塞,主线程被占用,后续的程序代码就会被卡主。
nodejs的单线程只是一个js主线程,本质上的一步操作还是由线程池完成的。node将所有的阻塞操作都交给了内部的线程池去实现,本身只负责不断的往返调度,并没有进行真正的I/O操作,从而实现异步非阻塞I/O。
nodejs之所以单线程可以处理高并发的原因,在于libuv层的事件循环机制,和底层线程池的实现。
(有待完善。)
标签:高并发 机制 基本 16px event 代码 非阻塞 需要 第一个
原文地址:https://www.cnblogs.com/zhengyeye/p/10045133.html