概述
一、进行和线程
1.进程之间相互独立,多个线程在进程中协作完成任务;一个进程由一个或多个线程组成,同一个进程下的各个线程之间共享程序的内存空间(代码段、数据集、堆等)
2.在windows电脑中,打开任务管理器看到一个后台进程列表,而且可以看到每个进程的内存资源信息以及cpu占有率
3.单线程与多线程,都是指在一个进程内的单和多。
4.浏览器是多进程的,每打开一个tab页,就相当于创建了一个独立的浏览器进程。浏览器进程包含browser进程(前进和后退)、第三方插件进程、GPU进程和浏览器渲染进程(页面的渲染、js的执行、事件循环)。
二、浏览器的渲染进程
1.浏览器的渲染进程是多线程的
(1)GUI渲染线程:负责渲染浏览器界面,解析HTML,CSS构建DOM树和RenderObject树,布局和绘制等;回流和重绘时会执行;
(2)JS引擎线程:负责处理js脚本程序,一个tab页(进程)中无论什么时候都只有一个js线程在运行js程序。GUI渲染线程和JS引擎线程是互斥的,当JS引擎执行时GUI线程会被挂起,如果js执行的时间过程,就会导致页面渲染加载阻塞。
(3)事件触发线程:归属于浏览器而不是JS引擎,用来控制事件循环;由于js是单线程关系,所以这些待处理队列种的事件都要排队等待JS引擎空闲时执行;
(4)定时器触发线程:
(5)异步http请求线程
三、css加载是否会阻塞dom树渲染
css是单独的下载线程异步下载的;css的加载不会阻塞DOM树解析,但会阻塞render树渲染
四、普通图层和复合图层
(1)GPU种,各个复合图层是单独绘制的,所以互不影响;
最后
以上就是无奈手套为你收集整理的浏览器多进程到js单线程以及js运行机制的全部内容,希望文章能够帮你解决浏览器多进程到js单线程以及js运行机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复