18.1 理解线程的概念
2026/1/18大约 1 分钟
18.1 理解线程的概念
引入线程的背景
多进程的缺点
- 创建进程的过程会带来一定的开销:需要复制数据区(保存全局变量)、堆-heap(malloc 等函数动态分配的内存)、栈-stack(函数运行时)
- 进程间交换数据需要通过 IPC
- 切换进程时的上下文切换:影响性能的主要原因
上下文切换:在不同进程之间进行切换时A-》B,需要将A的相关信息移除内存-移动到硬盘,然后将B的相关信息从硬盘读入到内存。在内存 和 硬盘 之间交换数据需要花费很长时间。
线程和进程的差异
相关信息
为了保持多进程的优点,同时在一定程度上客服其缺点,人们引入了线程(Thread)。“轻量级进程”
每个进程拥有独立的内存空间,创建子进程时会完全拷贝数据区、堆 和 栈。
相关信息
以多个代码执行流(多个函数并发)为主要目的,不需要完全分离内存结构,只需要分离栈区域
在进程内创建线程,线程之间共享数据区 和 堆
线程相比进程的优点:
- 创建和上下文切换更快:不需要切换/创建 数据区 和 堆,只需要切换/创建栈
- 线程间交换数据不需要特殊技术:通过数据区 或 堆 交换数据