浏览器内核处置惩罚流程

浏览器的内核是多线程的,它们在内核掌握下相互配合以坚持同步,一个浏览器最少完成三个常驻线程:JavaScript引擎线程GUI衬着线程浏览器事宜触发线程

JavaScript引擎是基于事宜驱动单线程实行的,JavaScript引擎一向守候着使命行列中使命的到来,然后加以处置惩罚,浏览器不管什么时候都只要一个JavaScript线程在运转JavaScript顺序。

GUI衬着线程担任衬着浏览器界面,当界面须要重绘(Repaint)或因为某种操纵激发回流(Reflow)时,该线程就会实行。但须要注重,GUI衬着线程JavaScript引擎是互斥的,当JavaScript引擎实行时GUI线程会被挂起,GUI更新会被保存在一个行列中比及JavaScript引擎空闲时马上被实行。

事宜触发线程,当一个事宜被触发时,该线程会把事宜添加到待处置惩罚行列的队尾,守候JavaScript引擎的处置惩罚。这些事宜可来自JavaScript引擎当前实行的代码块如setTimeout、也可来自浏览器内核的其他线程如鼠标点击Ajax异步要求等,但因为JavaScript的单线程关联,所有这些事宜都得列队守候JavaScript引擎处置惩罚(当线程中没有实行任何同步代码的前提下才会实行异步代码)。

    原文作者:whjin
    原文地址: https://segmentfault.com/a/1190000009016098
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞