electron多进程设计

发布于:2025-08-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ 个人主页:唐璜Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



前言

提示:这里可以添加本文要记录的大概内容:

进程和线程是操作系统中的重要概念。进程是独立运行的程序,每个进程有自己的内存空间;线程是进程中的一个执行单元,多个线程共享进程的内存空间,可以实现并行计算。Electron框架采用多进程设计,主进程管理应用窗口和生命周期,渲染进程负责用户界面和网页内容,两者通过特定机制进行通信。这种设计提高了应用的稳定性和性能。


提示:以下是本篇文章正文内容,下面案例可供参考

一、进程和线程

1. 进程

在这里插入图片描述

  • 进程是正在运行的计算机程序实例(instance of a computer program that is being executed),每个运行的程序就是一个进程。

  • 示例: 如同时打开浏览器、音乐播放器和视频软件,每个程序都是独立的进程。

  • 管理工具: 可通过任务管理器(Windows)或活动监视器(Mac)查看当前运行的进程。

2. 线程

在这里插入图片描述

  • 定义: 线程是进程内的执行单元,一个进程可包含多个线程。
  • 类比: 将进程比作车间,线程则是车间里的工人,协同完成任务。
  • 特点: 浏览器JavaScript执行环境是单线程且事件驱动的。

3. 进程和线程的区别

在这里插入图片描述

  • 内存使用:
    进程:操作系统为每个进程分配独立内存空间,默认不能共享(如浏览器无法访问Keynote的内存)
    线程:共享所属进程的内存空间(如车间工人共享车间空间)
  • 通信机制:
    进程间通信需要特殊机制(如IPC)
    线程间通信直接通过共享内存实现
  • 资源开销:
    线程更轻量级,创建更快,资源消耗更少

4. 主进程和渲染进程

1)主进程
在这里插入图片描述

  • 特点:
    (1)有且仅有一个,作为应用入口点
    (2)在Node.js环境中运行,可使用所有Node.js API

  • 职责:
    窗口管理(通过BrowserWindow创建/管理窗口)
    应用生命周期控制(通过electron.App模块)
    访问原生API
    代码示例: 通过app.on(‘ready’)事件创建窗口
    2)渲染器进程
    在这里插入图片描述

  • 特点:
    每个BrowserWindow生成一个独立渲染进程
    负责渲染网页内容
    无权直接访问require或其他Node.js API

  • 设计优势:
    单个tab崩溃不会影响其他进程
    但会消耗更多内存(如Chrome的多进程架构)

  • 关键功能: 通过与主进程通信(IPC)来扩展功能,突破浏览器限制

二、electron多进程设计

  • 进程(Process)

正在运行的独立程序实例,操作系统分配独立内存空间(如浏览器、音乐软件并行运行)

进程间默认内存隔离(浏览器无法访问Keynote内存)

⭐⭐

  • 线程(Thread)

进程内的执行单元,共享进程内存(类比“车间工人”),支持多线程编程

浏览器JS环境为单线程(事件驱动模型)

⭐⭐⭐

  • 进程 vs 线程
  1. 内存使用:进程独立/线程共享
  2. 通信机制:进程需IPC/线程直接交互
  3. 量级:线程更轻量

多线程崩溃可能影响整个进程,而多进程设计(如Chrome)可隔离崩溃

⭐⭐⭐⭐

  • Electron主进程(Main Process)

唯一入口,拥有Node.js环境权限(require模块、原生API调用),负责窗口管理(BrowserWindow)、生命周期控制(app模块)

可直接访问系统级功能(如文件操作)

⭐⭐⭐

  • Electron渲染进程(Renderer Process)

每个窗口/Tab独立进程,仅渲染网页内容(无权直接调用Node.js API)

需通过IPC与主进程通信才能突破浏览器限制

⭐⭐⭐⭐

  • Electron多进程架构

基于Chromium设计:主进程统筹全局,渲染进程隔离运行(崩溃不影响其他窗口)

内存开销大(多进程代价)

⭐⭐⭐

  • IPC(进程间通信)

主进程与渲染进程交互的核心机制(后续课程重点)

渲染进程功能扩展的关键(如调用原生API)

⭐⭐⭐⭐

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了Electron框架采用多进程设计,主进程管理应用窗口和生命周期,渲染进程负责用户界面和网页内容,两者通过特定机制进行通信。这种设计提高了应用的稳定性和性能。


网站公告

今日签到

点亮在社区的每一天
去签到