线程二三事

线程对程序员来说是一种陌生又熟悉的东西,熟悉是因为它在日常开发中必不可少,陌生是因为如果要解释一下线程背后和底层的一些原理,很多人可能都语焉不详。我在这篇文章上看到对线程简明易懂又准确的解释,在此总结一下,其中加上一些我的理解。

  1. 线程是CPU使用的一个基本单元(别小看这句话,理解这个定义就基本能理解线程。计算机程序都是通过获得CPU使用权来运行的,或竞争,或由操作系统调度), 它由一个程序计数器(PC, Program Counter), 一个栈(Stack), 一系列寄存器(Register), 和一个ID(Thread ID)组成。

  2. 传统(重量级)进程有它自己单独一条控制流 - 一个程序计数器,和在一指定时间执行的一系列指令。

  3. 如下图所示, 多线程应用在一个进程里面有多条线程, 每条线程都拥有自己的程序计数器,栈和寄存器, 这些线程共享代码,数据,和文件。

comments powered by Disqus