从 Python、Go、Java、PHP 的语言层实现,到操作系统调度、CPU 执行,再到物理硬件的原子操作与缓存一致性,完整剖析多线程技术的每一层奥秘。
每种编程语言都有自己独特的线程模型。有的直接映射到操作系统线程(如 Java),有的通过运行时实现了更轻量的协程(如 Go 的 goroutine),有的则受到 GIL 的限制(如 Python)。
操作系统内核负责线程的调度和资源分配。线程控制块(TCB)保存线程状态,上下文切换让 CPU 可以在不同线程间切换。
CPU 通过寄存器保存线程执行上下文。程序计数器(PC)指向当前指令,栈指针(SP)指向线程栈顶。上下文切换时,内核将寄存器值保存到线程栈或 TCB 中。
硬件层决定了线程安全性的底线。CPU 缓存带来可见性问题,内存屏障保证顺序一致性,原子指令提供基本的线程安全操作。