进程和线程的区别以及Chrome中的常⻅进程

进程(Process)和线程(Thread)都是操作系统中用于多任务处理的概念。简单地说,一个进程就是一个程序的执行空间 ,而一个线程则是在执行空间内独立运行的执行路径

区别:

  1. 进程是系统分配资源的最小单位,线程是操作系统调度的最小单位。
  2. 各个进程之间是独立的,各个线程之间共享一些资源。
  3. 创建或销毁进程时,会涉及到比较多的系统资源,开销比较大,而线程的创建和销毁的开销相对较小。
  4. 进程与进程之间会有 IPC(进程间通信)的开销,而线程之间的 IPC 开销较小。

Chrome 中的进程

在 Chrome 浏览器中,会有多个进程同时运行:

  1. Browser 进程:负责管理整个浏览器的生命周期、显示窗口、处理用户操作等。
  2. Renderer 进程:负责一个 Tab 内关联的页面的渲染和运行,每个 Tab 都有一个独立的 Renderer 进程。
  3. GPU 进程:负责处理页面中使用的 WebGL 等 GPU 相关任务。
  4. Plugin 进程:负责运行插件,包括 Flash 等。
  5. Utility 进程:负责处理部分浏览器内部的任务,比如下载、DNS 等。

如果想让 JS 代码达到多线程并发执行的效果,可以使用 Web Workers。Web Workers 是运行在后台的 JavaScript 线程,可以让页面在主线程中执行 JS 代码的同时,创建一个或多个新的线程在后台执行耗时的任务。Web Workers 的 API 包括:

  1. Worker 构造函数:用于创建一个新的 Worker 线程。
  2. postMessage() 方法:用于向 Worker 线程发送数据。
  3. onmessage 事件:用于监听 Worker 线程发送回来的消息。

举个例子,可以使用如下代码创建一个 Worker 线程:

js 复制代码
// file: worker.js
self.addEventListener('message', function(e) {
  var data = e.data;
  self.postMessage(data);
}, false);

// file: main.js
var worker = new Worker('worker.js');
worker.addEventListener('message', function(e) {
  console.log('Worker said: ', e.data);
}, false);
worker.postMessage('Hello World');

在上面的例子中,我们在主线程中创建了一个 Worker 线程,向它发送了一条消息,并在 Worker 线程中处理这条消息,并将结果发回到主线程。这样就实现了多线程的并发执行效果。

相关推荐
想要成为糕糕手13 小时前
🧵 浏览器里的第二大脑:Web Worker
javascript·react.js·浏览器
未来智慧谷2 天前
从 Atlas 关停复盘:AI 应用的三种载体形态怎么选(独立应用 / 浏览器扩展 / 桌面宿主)
前端·人工智能·ai·架构·浏览器
卸任8 天前
LocalTab:一个本地化、简洁且可定制的浏览器新标签页
前端·浏览器
小月土星18 天前
1.0 从零构建 DeepSeek R1 WebGPU 浏览器推理应用:一次现代前端工程与端侧 AI 的深度碰撞
浏览器·deepseek
不好听61319 天前
端侧 AI 与 WebGPU:在浏览器里运行大模型
llm·浏览器
触底反弹19 天前
前后端通信不是魔法,是 HTTP 协议、数据格式和浏览器安全机制共同演奏的交响曲
http·https·浏览器
qq_2573795925 天前
如何卸载Edge浏览器
前端·windows·git·python·edge·app·浏览器
seven_stars_1 个月前
CVE-2018-19518PHP漏洞
linux·浏览器·kali
网络研究院1 个月前
Brave浏览器放大招引入容器功能,实现多账户安全隔离
网络·安全·容器·浏览器·数据·隐私
Lugas1 个月前
浏览器为什么要如此严格地限制跨域请求?
前端·黑客·浏览器