|
|
|
在20世纪80年代中期,人们提出了更小的能独立运行的基本单位,也就是“线程”。
|
|
|
|
所谓线程,就是进程当中的一条执行流程(见下图),这样做的好处是:
|
|
|
|
|
|
|
|
.在一个进程当中,或者说在一个资源平台上,可以同时存在多个线程。如下图所示,在这个例子当中,一个进程包含有三个线程。
|
|
|
|
|
|
|
|
.可以用线程来作为CPU的基本调度单位,使得各个线程之间可以并发地执行。
|
|
|
|
.对于同一个进程当中的各个线程来说,由于它们是运行在相同的资源平台上,因此它们可以共享该进程的各种资源,如内存地址空间、代码、数据、文件等等,这就使得线程之间的通信与交流变得非常方便。
|
|
|
|
既然线程是代码在进程的资源平台上的一条执行流程,那么是不是进程的所有资源都能够共享呢?答案是否定的。对于同一个进程的各个线程,它们可以共享该进程的大部分资源,但也有一小部分的资源是不能共享的,每个线程都必须拥有各自独立的一份。这些资源包括CPU运行上下文(如程序寄存器、状态寄存器、通用寄存器和栈指针等)和栈。
|
|
|