【视频】浏览器渲染原理和打开网页机制
浏览器是多线程的,js是单线程的。Js在浏览器中,它可以是多线程的。
浏览器, 在内核控制下相互配合以保持同步。它至少三个常驻的线程,JavaScript引擎线程,GUI渲染线程,浏览器事件触发线程。
1) javascript引擎是基于事件驱动单线程执行的;
2) 渲染线程负责渲染浏览器界面,但是 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI的更新也会被保存在一个队列中,等到JS引擎空闲时才有机会被执行。这就是JS阻塞页面加载。
3)事件触发线程,当一个事件被触发时该线程会把事件添加到任务队列的队尾,等待JS引擎的处理。