当前位置: 首页 > news >正文

electron多进程设计

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


文章目录

  • 前言
  • 一、进程和线程
    • 1. 进程
    • 2. 线程
    • 3. 进程和线程的区别
    • 4. 主进程和渲染进程
  • 二、electron多进程设计
  • 总结


前言

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

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

http://www.lryc.cn/news/615163.html

相关文章:

  • K8s-pod控制器
  • Baumer高防护相机如何通过YoloV8深度学习模型实现输电线路塔电缆检测分割(C#代码UI界面版)
  • DAY 37 作业(补)
  • 99-基于Python的京东手机数据分析及预测系统
  • 【工具变量】全国省级农业保险保费收入与赔付支出数据更新(2001-2023年)
  • 爬虫攻防战:反爬与反反爬全解析
  • react-window
  • 【Datawhale AI夏令营】基于多模态RAG的企业财报问答系统
  • Arduino系列教程:点亮一个LED灯
  • 【工具】Python多环境管理
  • Red Hat Enterprise Linux 7.9安装Oracle 11.2.0.4单实例数据库-图文详解
  • Python训练营打卡Day27-类的定义和方法
  • 线程池多反应堆服务器webserver(c++)
  • 算法篇----模拟
  • Linux的软件防火墙iptables
  • QML 鼠标穿透
  • 从免费到盈利:Coze智能体1小时封装变现全流程指南——井云科技
  • 云服务器--阿里云OSS(2)【Springboot使用阿里云OSS】
  • 81 keil仿真调试记录
  • C++11中的移动语义
  • 优化器:SGD、Adam、RMSprop等优化算法对比与机器翻译应用
  • day 16 stm32 IIC
  • 【Java EE初阶 --- 网络原理】JVM
  • 堆----3.数据流的中位数
  • 【Redis】Redis-plus-plus的安装与使用
  • 自定义通知组件跟随右侧边栏移动
  • SQL基本
  • 探索Trae:使用Trae CN爬取 Gitbook 电子书
  • 2025-08-09 李沐深度学习14——经典卷积神经网络 (2)
  • 生态问题是什么?