| 对比项 | 用户级线程 (ULT) | 内核级线程 (KLT) |
|---|---|---|
| 管理者 | 用户空间线程库 | 操作系统内核 |
| 内核可见性 | 不可见 | 可见 |
| 调度方式 | 用户态调度,不需系统调用 | 内核态调度,需系统调用 |
| 切换速度 | 快(用户态完成) | 慢(需模式切换) |
| 阻塞影响 | 一个 ULT 阻塞 → 整个进程阻塞 | 仅阻塞该 KLT |
| 多核利用 | 不能 | 能 |
| 典型实现 | Green Thread、早期 Java 线程 | Linux pthread、Windows 线程 |
| 考法 | 解题套路 |
|---|---|
| ULT vs KLT | ULT 快但会连带阻塞,KLT 可并行但开销大 |
| 一对一模型 | 现代 OS 主流(Linux / Windows),每个 ULT 配一个 KLT |
| ULT 阻塞问题 | ULT 阻塞 → 内核认为整个进程阻塞 → 调度另一进程 → 其他 ULT 也无法运行 |
| 多对多模型 | n 个 ULT 映射 m 个 KLT,兼顾灵活性(ULT 切换快)和并行性(KLT 可并行) |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。