不懂不要胡说.
![[蛋糕]](/static/emoticons/u86cbu7cd5.png)
我用解释性的代码举个例子:
请求..
要菜单列表
得到菜单列表
响应,发送菜单列表
![[茶杯]](/static/emoticons/u8336u676f.png)
同时来了30个请求,同步最大并发3个。
我们来比较下同步和异步的实现方式:
同步:
进程1 -> 请求 -> 要菜单列表 -> 得到菜单列表 -> 响应,发送菜单列表
进程2 -> 请求 -> 要菜单列表 -> 得到菜单列表 -> 响应,发送菜单列表
进程3 -> 请求 -> 要菜单列表 -> 得到菜单列表 -> 响应,发送菜单列表
4,5,6,...等待前3个完成
异步:
进程1 -> 请求 -> 要菜单列表 -> 交给操作系统
------------> 请求 -> 要菜单列表 -> 交给操作系统
------------> 请求 -> 要菜单列表 -> 交给操作系统
... ............继续接受请求
------------> 得到菜单列表 -> 响应,发送菜单列表
------------> 得到菜单列表 -> 响应,发送菜单列表
------------> 得到菜单列表 -> 响应,发送菜单列表
................得到菜单列表 -> 响应,发送菜单列表
看出区别了吗? 我只开了一个进程,处理了3个请求。
如果一个进程消耗10M内存,那么节省了20M内存。
同步的时候,一旦3个进程填满,后面的都要等待。
异步的时候,并没有等待,NODEJS继续处理请求,然后把IO交给操作系统。
操作系统取出数据,回调,NODEJS发送响应。