商城网站建设预算要多少钱,外贸平台有哪些能直接联系老板的,wordpress贴代码,网站开发的工作制度一、事件循环
浏览器有哪些进程和线程
浏览器是一个多进程多线程的应用程序#xff0c;当启动浏览器后#xff0c;会默认启动多个进程 可以在浏览器任务管理器中查看所有进程 其中最主要的进程有#xff1a; 浏览器进程 主要负责界面展示#xff0c;用户交互#xff0c;…一、事件循环
浏览器有哪些进程和线程
浏览器是一个多进程多线程的应用程序当启动浏览器后会默认启动多个进程 可以在浏览器任务管理器中查看所有进程 其中最主要的进程有 浏览器进程 主要负责界面展示用户交互子进程管理内部会启动多个线程处理不同任务 网络进程 负责加载网络资源也会启动多个线程 渲染进程 渲染进程启动后会开启一个渲染主线程主线程负责执行HTMLCSSJS代码 默认情况下浏览器会为每个标签页开启一个新的渲染线程以保证不同的标签页之间互不影响
渲染主线程是如何工作的
渲染主线程是最繁忙的需要它处理的任务包括但不限于
解析HTML解析CSS计算样式布局处理图层每秒把页面画60次执行全局的js代码执行事件处理函数执行计时器的回调函数… … 渲染主线程如何调度 在最开始渲染主线程会进入一个无限循环每一次循环都会检查消息队列中是否有任务存在如果有就取出第一个任务执行执行完进入下一个循环。如果没有则进行休眠其他所有线程包括其它进程中的线程可以随时向消息队列中添加任务。新任务会加在末尾主线程如果休眠则会唤醒
整个过程被称作事件循环或消息循环
若干解释
何为异步
代码在执行过程中会遇到一些无法立即执行的任务如
计时完成后需要完成的任务网络通讯完成后需要执行的任务用户操作后需要执行的任务
如果让主线程等待就会导致主线程长期处于阻塞状态导致浏览器卡死
同步示意图
异步示意图 js为何阻碍渲染
js的执行和渲染在一个线程中执行
任务有优先级吗
没有优先级在消息队列中先进先出
消息队列是有优先级的可以有多个消息队列延时队列微队列交互队列等
每个任务都有一个任务类型每个类型的任务必须在同一个队列不同类型的任务可以分属于不同的队列再一次事件循环中浏览器可以根据实际情况从不同队列取任务浏览器不许准备好一个微队列微队列中的任务优先于其他任务执行
二、浏览器的渲染原理
渲染时间点 渲染流水线 1、解析html 将html解析dom树 将css解析css树css对象模型 解析遇到CSS代码如何处理 为了提高效率浏览器会启动一个预解析器率先下载和解析CSS 遇到js代码如何处理 渲染主线程遇到js必须暂停一切行为等待下载执行完成后才能继续预解析线程可以分担一点下载js的任务 2、样式计算
最终生成计算后的样式 3、布局 4、分层 5、绘制 6、分块 7、光栅化 8、画