1 Matching Annotations
  1. Apr 2026
    1. 个线程共享进程的

      进程和线程是操作系统中最核心的并发执行模型。简单来说,进程是“资源分配”的最小单位,而线程是“CPU调度”的最小单位

      我们可以将它们生动地比作一个“工厂”: * 进程(Process)就像是一个独立的工厂,它拥有自己的厂房和资源(独立的内存空间)。 * 线程(Thread)就像是工厂里的流水线工人,他们共享工厂的资源(共享内存),但在各自的流水线上干活(独立的执行路径)。

      一、 进程与线程的关系

      1. 包含关系: 一个进程至少包含一个线程(主线程)。线程不能独立于进程存在,它必须依附于进程。
      2. 资源共享: 同一个进程内的所有线程,共享该进程的代码段、数据段、堆内存以及打开的文件句柄等系统资源。
      3. 独立执行: 每个线程都有自己独立的程序计数器(PC)虚拟机栈/本地方法栈,用来记录各自的执行位置和局部变量。

      二、 核心区别比较

      | 比较维度 | 进程 (Process) | 线程 (Thread) | | :--- | :--- | :--- | | 根本性质 | 操作系统资源分配的基本单位。 | 操作系统CPU调度和执行的基本单位。 | | 内存隔离 | 进程间相互隔离,拥有独立的虚拟地址空间。 | 同一进程内的线程共享内存和资源,相互间不隔离。 | | 系统开销 | 。创建、销毁和切换进程时,系统需分配/回收大量资源(如页表),上下文切换成本高。 | 。属于轻量级,只保存少量寄存器和栈信息,上下文切换非常快。 | | 通信方式 | 复杂。需要借助进程间通信(IPC)机制,如管道、消息队列、共享内存、Socket等。 | 简单。可直接通过读写同一进程内的共享变量来通信(需处理并发同步)。 |


      三、 优缺点评估

      1. 多进程架构 (Multi-Process)

      • 优点(稳健性强): 各个进程相互独立。一个进程因为写错内存代码崩溃了,不会影响其他进程。非常适合对稳定性要求极高的系统(如 Nginx 的 Master-Worker 模型,Chrome 浏览器的多进程标签页)。
      • 缺点(笨重): 占用内存大,系统资源消耗多;进程间的上下文切换慢;进程间数据共享和通信比较麻烦。

      2. 多线程架构 (Multi-Thread)

      • 优点(轻量高效): 创建和切换代价小,能充分压榨多核 CPU 的性能;线程间通信极快,非常适合需要高频数据交互的并发场景(如 Java Web 服务处理 HTTP 请求)。
      • 缺点(脆弱且复杂): * 牵一发而动全身: 同一个进程中,如果某个线程因为段错误(如访问非法内存)崩溃,通常会导致整个进程直接崩溃。
        • 并发安全问题: 多个线程同时读写共享数据,极易引发竞态条件(Race Condition),需要开发者耗费大量精力使用锁(Mutex/Lock)、CAS 等机制来处理线程同步和死锁问题。