为啥js执行和dom渲染共用一个线程?浏览器的渲染进程中存在执行js的js引擎线程,也有负责渲染的线程呀,这两个线程是单独的吧,不是共用一个线程。
来源:5-9 -浏览器和nodejs事件循环(Event Loop)有什么区别-浏览器
THEEND0123
2024-07-18
老师,您好,我搜了一下。浏览器的进程和线程。
浏览器的渲染进程中存在执行js的js引擎线程,也有负责渲染的线程呀,这两个线程是单独的吧,不是共用一个线程。
在浏览器中打开一个网页相当于新起了一个进程。
1.浏览器核心进程
浏览器的核心进程,负责管理和协调其他所有进程。它的主要职责包括:
● 用户界面:处理地址栏、书签栏、后退/前进按钮等。
● 资源管理:管理网络请求、文件访问和缓存。
● 进程管理:创建和销毁其他进程,如渲染进程、插件进程等。
2. 渲染进程(Renderer Process)
每个标签页通常都有一个独立的渲染进程,负责处理页面内容的渲染。其主要职责包括:
● HTML解析:解析HTML文件,构建DOM树。
● CSS解析:解析CSS文件,生成CSSOM树。
● JavaScript执行:执行JavaScript代码。
● 布局和绘制:计算页面布局,并将页面绘制到屏幕上。
3. GPU进程
GPU进程主要负责处理页面的图形渲染任务,如合成层、3D绘图等。由于图形处理任务通常非常耗时,因此将其独立到一个单独的进程中可以提高整体性能。
4. 网络进程
网络进程负责处理网络请求、响应、缓存等。它与渲染进程和浏览器进程交互,以获取所需的资源。
5. 插件进程
插件进程用于处理浏览器中的插件(如Flash)。每个插件通常有一个单独的进程,以防止插件崩溃影响整个浏览器的稳定性。
渲染进程内的线程
● GUI渲染线程:负责渲染浏览器界面,包括HTML和CSS解析、布局和绘制。注意,GUI渲染线程和JavaScript引擎线程是互斥的,JavaScript执行会阻塞GUI渲染。
● JavaScript引擎线程:负责执行JavaScript代码。常见的JavaScript引擎如Chrome的V8引擎。
● 事件触发线程:负责管理浏览器事件(如鼠标点击、键盘输入等)的分发。当事件触发时,它会将事件分发到JavaScript引擎线程执行相应的回调函数。
● 定时器线程:管理setTimeout和setInterval的计时任务。当计时结束时,将相应的回调函数推入事件队列。
● 异步HTTP请求线程:处理XMLHttpRequest和Fetch请求。当请求完成时,将回调函数推入事件队列。
1回答
-
双越
2024-07-18
如果两个是独立存在的,并发执行的。那如果出现 DOM 渲染的冲突怎么处理?因为 JS 也可以操作 DOM
012024-07-19
相似问题