进程和线程的区别
进程有独立的内存空间,进程之间相互独立,不同进程间可以通过IPC协议进行通信
进程由一个或者多个线程组成,线程是进程的基本单位
同一进程的多个线程可以相互通信,状态共享
进程是CPU资源分配的最新单位,线程是CPU调度的最小单位
浏览器进程和线程
常见的浏览器进程
1,浏览器主进程
负责浏览器界面显示,与用户交互,如前进,后退等
负责各个页面的管理,创建,和销毁其他进程
将Renderer进程得到的内存中的Bitmap,绘制到用户界面上
网络资源的管理,下载等
2,GPU进程
用于3D绘制等
3,第三方插件进程
每种类型对应一个进程,仅当使用该插件时才创建
4,浏览器渲染进程
也叫浏览器内核,主要作用:页面渲染,脚本执行,事件处理等。
renderer进程主要包含的线程
(1)GUI渲染线程
负责渲染浏览器界面,如解析hrml,css,构件DOM树和RenderObject树,布局和绘制等
当界面需要重绘或者某种操作引发回流时,改线程执行
注意:GUI线程与JS引擎线程是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会保存在一个队列种等到JS引擎空闲时被立即执行。
(2)JS引擎线程
处理javascript脚本程序,解析javascript脚本,运行代码
(3)事件触发线程
该线程归属浏览器,控制事件循环,比如执行鼠标点击,AJAX异步请求等时会将对应任务添加到事件触发线程中
当对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理
(4)定时器触发线程
即setInterval与setTimeout所在线程
使用单独线程来计时并触发定时器,计时完毕后,添加到事件队列中,等待JS引擎执行。
(5)异步http请求线程
XMLHttpRequest连接后通过浏览器开一个线程请求
检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将回调函数放入事件队列中,等待JS引擎空闲后执行
网友评论