浏览器的多线程
Youky ... 2021-11-27 Less than 1 minute
# 浏览器的多线程
浏览器本身是多进程、多线程的。不同的tab页属于不同的进程。
对于一个tab页来讲,有多个不同的线程负责不同的内容。
# 1. GUI线程
负责渲染HTML元素,产生重绘和重排时会执行。
在JS脚本运行期间,GUI线程处于 “挂起” 状态
# 2. JS引擎线程
负责执行JS代码,一个tab页中只能有一个JS线程
# 3. 事件触发线程
用来控制事件循环。
异步任务加入异步队列后,就是交由事件触发线程处理。
# 4. 定时器线程
负责处理setTimeout
和setTimeInterval
等定时器事件。由于JS是单线程的,可能会影响计时的准确性。
# 5. HTTP请求线程
对于XHR请求,浏览器会新开一个线程进行请求。