浏览器的线程

简介: 浏览器是多进程还是单进程?

浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。
浏览器每个进程有多个线程,主要有以下线程
GUI 渲染线程:
负责渲染页面,解析 HTML,CSS 构成 DOM 树等,当页面重绘或者由于某种操作引起回流都会调起该线程。
和 JS 引擎线程是互斥的,当 JS 引擎线程在工作的时候,GUI 渲染线程会被挂起,GUI 更新被放入在 JS 任务队列中,等待 JS 引擎线程空闲的时候继续执行。
JS 引擎线程:
单线程工作,负责解析运行 JavaScript 脚本。
和 GUI 渲染线程互斥,JS 运行耗时过长就会导致页面阻塞。
事件触发线程:
当事件符合触发条件被触发时,该线程会把对应的事件回调函数添加到任务队列的队尾,等待 JS 引擎处理。
定时器触发线程:
浏览器定时计数器并不是由 JS 引擎计数的,阻塞会导致计时不准确。
开启定时器触发线程来计时并触发计时,计时完成后会被添加到任务队列中,等待 JS 引擎处理。
http 请求线程:
http 请求的时候会开启一条请求线程。
请求完成有结果了之后,将请求的回调函数添加到任务队列中,等待 JS 引擎处理。
JavaScript引擎一直等待着任务队列中任务的到来.由于单线程关系,这些任务得进行排队,一个接着一个被引擎处理

相关文章
|
2月前
|
缓存 网络协议 前端开发
浏览器访问缓存都发生了什么
浏览器访问缓存都发生了什么
|
3月前
|
数据采集 安全 Go
一文看懂 如何操作浏览器访问网页
一文看懂 如何操作浏览器访问网页
33 0
|
10月前
|
消息中间件 前端开发 JavaScript
浏览器中的事件循环
浏览器中的事件循环
59 1
|
10月前
|
缓存 移动开发 编解码
和我一起来看看浏览器的异步实现到底有哪些方式
前端为何会有异步这一说法,是因为前端的代码是在浏览器中运行的,而浏览器是单线程的,前端的代码是在主线程中运行的,如果有耗时的操作,就会阻塞主线程,导致页面卡顿,所以就有了异步这一说法。
236 0
|
JavaScript 前端开发 API
浏览器原理 27 # WebComponent
浏览器原理 27 # WebComponent
129 0
浏览器原理 27 # WebComponent
|
Web App开发 存储 前端开发
浏览器原理 01 # Chrome架构:仅仅打开了1个页面,为什么有4个进程?
浏览器原理 01 # Chrome架构:仅仅打开了1个页面,为什么有4个进程?
316 0
浏览器原理 01 # Chrome架构:仅仅打开了1个页面,为什么有4个进程?
|
Web App开发 存储 JavaScript
浏览器渲染引擎与阻塞
浏览器渲染引擎与阻塞
|
JavaScript 前端开发 异构计算
关于浏览器的渲染进程
最近都在跟着青训营学习,不跟着学习的时候也去看node的相关课程了,很少有自己去学一些别的知识,刚好今天的学习任务量较少,进度赶出来了,晚上无聊,看了看之前感兴趣的重绘重排的相关知识,梳理了一下浏览器的相关原理,挑出一部分,记录在博客上。
|
Web App开发 存储 缓存
浏览器渲染机制(二)上
浏览器渲染机制(二)上
275 0
浏览器渲染机制(二)上
|
Web App开发 JavaScript 前端开发
浏览器的渲染机制(一)上
浏览器的渲染机制(一)上
183 0