进程和线程
创建时间:2025-05-08 13:55
长度:1242
浏览:0
评论:0
进程(Process)
进程是 独立的执行单元,拥有独立的内存空间和系统资源
在 Electron 中,每个进程相互隔离,通过 IPC(进程间通信) 进行数据交换。
Electron 中的主要进程类型
进程类型 | 职责 | 数量 |
---|---|---|
主进程(Main Process) | - 管理应用生命周期 - 创建窗口 - 访问 Node.js API | 1 个 |
渲染进程(Renderer Process) | - 展示网页内容 - 运行页面脚本(HTML/CSS/JS) - 通过 preload 脚本有限访问 Node.js | 每个窗口 1 个 |
其他辅助进程 | - GPU 进程(图形渲染) - Utility 进程(网络请求、文件操作等) | 按需创建 |
进程间通信(IPC)
主进程 ↔ 渲染进程:
// 主进程
const { ipcMain } = require('electron')
ipcMain.on('msg-from-renderer', (event, data) => {
event.reply('reply', '收到消息')
})
// 渲染进程
const { ipcRenderer } = require('electron')
ipcRenderer.send('msg-from-renderer', 'Hello')
ipcRenderer.on('reply', (event, data) => {
console.log(data) // '收到消息'
})
线程(Thread)
线程是 进程内的执行单元,共享同一进程的内存和资源。
Electron 中的线程由 Chromium 和 Node.js 底层管理
关键线程类型
线程类型 | 职责 |
---|---|
主线程(UI 线程) | - 处理 UI 更新 - 执行 JavaScript 主逻辑(如 Vue/React 代码) |
I/O 线程 | - 处理网络请求、文件读写等异步操作(通过 Node.js 线程池 |
Worker 线程 | - 执行 CPU 密集型任务(通过 worker_threads 模块创建) |
区别
- 内存使用方面 每个进程都有操作系统分配给他们的一块单独的内存,默认情况下,一个进程的内容无法被另外一个进程所共享,一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
- 通信机制的区别
- 量级方面的区别
主进程 Main Process
每个Electron应用都有一个单一的主进程,作为应用程序的入口点。主进程在Node.j环境中运行,这意思着它具有require模块和使用所有的Node.js API的能力。
- 窗口管理
- 应用程序生命周期
- 原生API
渲染器进程 Renderer Process
每个Electron 应用都会为每个打开的 Browserwindow(与每个网页嵌入)生成一个单独的渲染器进程。洽如其名,渲染器负责 渲染网页内容。
渲染器无权直接访问 require 或其他 Node.js API。