前端node篇
2022-04-05
2分钟阅读时长
node篇
- 所谓node的单线程(事件循环线程(也被称为主循环,主线程,事件线程等))
node.js是单线程的,但是对于服务端应用而言,事件循环机制的方式提供了一个线程池处理诸如文件 I/O 等高成本任务(这也决定了Node的伸缩性非常好,某些场景下它甚至比类似 Apache 等更重量级的解决方案表现更优异: “少数线程处理大量客户端连接,nodejs占用少数线程,将更多的系统cpu事件和内存花在客户端任务而不是线程的空间消耗上(内存/上下文切换)“)
- 弊端
但是在 node 中,事件环机制保证了一切的任务总是按照事件队列的顺序执行,当某一个高CPU占用率的任务执行迟迟未完成时,后续队列中的监听回调、延时、nextTick()中的函数都因被阻塞而无法执行,造成了极严重的延迟。
- 浏览器相关补充:
-
浏览器是多进程的: Browser进程 第三方插件管理 GUI进程 渲染进程
-
渲染进程又是多线程的: GUI渲染线程 / js引擎线程 / 事件触发(点击事件)线程 / 定时器线程 / http 进程
GUI渲染线程与JS引擎线程互斥
Browser进程:浏览器的主进程(负责协调、主控),只有一个。作用有 负责浏览器界面显示,与用户交互。如前进,后退等 负责各个页面的管理,创建和销毁其他进程 将Renderer进程得到的内存中的Bitmap,绘制到用户界面上 网络资源的管理,下载等 第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建 GPU进程:最多一个,用于3D绘制等 浏览器渲染进程(浏览器内核)(R