当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 浏览器是多进程还是单进程?

浏览器是多进程还是单进程?

2020年04月20日  | 移动技术网IT编程  | 我要评论
在前端面试时,面试官经常会问:浏览器是多进程还是单进程? 浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。 浏览器每个进程有多个线程,主要有以下线程 1)GUI 渲染线程: ...

在前端面试时,面试官经常会问:浏览器是多进程还是单进程?

浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。

浏览器每个进程有多个线程,主要有以下线程

1)gui 渲染线程:

负责渲染页面,解析 html,css 构成 dom 树等,当页面重绘或者由于某种操作引起回流都会调起该线程。
和 js 引擎线程是互斥的,当 js 引擎线程在工作的时候,gui 渲染线程会被挂起,gui 更新被放入在 js 任务队列中,等待 js 引擎线程空闲的时候继续执行。

2)js 引擎线程:

单线程工作,负责解析运行 javascript 脚本。
和 gui 渲染线程互斥,js 运行耗时过长就会导致页面阻塞。

3)事件触发线程:

当事件符合触发条件被触发时,该线程会把对应的事件回调函数添加到任务队列的队尾,等待 js 引擎处理。

4)定时器触发线程:

浏览器定时计数器并不是由 js 引擎计数的,阻塞会导致计时不准确。
开启定时器触发线程来计时并触发计时,计时完成后会被添加到任务队列中,等待 js 引擎处理。

5)http 请求线程:

http 请求的时候会开启一条请求线程。
请求完成有结果了之后,将请求的回调函数添加到任务队列中,等待 js 引擎处理。

更多前端面试题库:

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网