线程和进程
- 进程是系统分配资源的最小单位,线程是CPU调度的最小单位,同一进程下可以有多个线程,多个线程共享进程的资源。
- 浏览器是多进程的,每打开一个tab页就创建了一个独立的浏览器进程,tab页过多时可能会合并一些tab
- 浏览器的进程包括:
- Browser进程:浏览器主进程,只有一个,负责协调,主控;
- 第三方插件进程
- GPU进程;
- 渲染进程:默认每个Tab页一个进程,负责页面渲染,脚本执行,事件处理等;
- 渲染进程是多线程的,包括:GUI渲染线程,JS引擎线程,事件触发线程,定时触发器线程,异步Http请求线程
- GUI渲染线程和JS引擎线程是互斥的,这是造成页面渲染加载阻塞的根本原因
- 一个Tab页只有一个JS引擎线程,即JS是单线程的
- 异步请求是浏览器的线程,当状态改变并有回调函数时,异步线程产生状态变更事件,由事件触发线程安排至待处理队列,等待JS引擎线程处理