浏览器内核是多线程的,各个线程互相配合,常驻线程如下:
- GUI渲染线程
负责对HTML文档的渲染,当发生重绘或者回流时,GUI线程就会执行。当JS引擎线程执行时,GUI线程会被挂起,两者互斥。 - JavaScript引擎线程
用于执行JavaScript脚本。单线程,与GUI线程互斥。 - 定时器线程
单独用于计时的线程。 - 事件触发线程
当一个事件被触发时该线程会把事件处理函数添加到任务队列的队尾,等待JS引擎的处理。 - Ajax异步HTTP请求线程
在XMLHttpRequest在连接后是通过浏览器新开一个线程请求, 将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件放到任务队列中等待处理。