操作系统
本文最后更新于 2025年9月12日 上午
线程多开的弊端
1、系统资源消耗过大
- 内存开销:每个线程需要独立的线程栈(几百 KB 到数 MB),线程数多了会占用大量内存。
- 句柄/内核对象消耗:OS维护线程管理信息(TCB,线程控制块),也是负担。
2、频繁上下文切换
- CPU可能一直在进行多线程切换而非执行实际任务,性能反而降低。
3、线程调度开销增加
- 线程调度器要在大量线程中决定调度,调度队列变长,增加调度延迟。
4、竞争和同步问题
- 多线程共享内存时,访问同一资源产生竞争,增加死锁,活锁等风险。
5、缓存一致性和CPU亲和性问题
- 如果线程频繁切换核,可能导致缓存失效,增加内存访问延迟。
6、程序稳定性风险
- 线程数超过系统支持的最大值可能导致线程创建失败或者系统卡顿甚至崩溃。
改善:
- 采用线程池:用固定数量线程复用,避免无限创建。
- 异步/事件驱动模型:在 I/O 密集型任务中,比开很多线程更高效。
- 限制线程数:一般根据 CPU核心数 和 任务性质(CPU 密集 or I/O 密集)来决定线程数量。
SIMD
单指令多数据
一种并行计算方式,允许处理器用一条指令同时对多个数据元素进行操作。
最常见的CPU向量化技术,MIMD则是多核CPU的通用并行方式。
实现方式:
- 寄存器向量化:CPU有专门的向量寄存器(如Intel AVX,SSE):
- SSE:128b向量寄存器
- AVX:256b向量寄存器
- GPU并行:GPU本身就非常擅长SIMD计算,每个线程执行相同指令,处理不同数据。
优点:
- 提升速度
- 降低功耗
- 适合向量化任务:图像滤波,矩阵运算,信号处理。
操作系统
http://example.com/2025/09/10/os/