线程:是操作系统能够进行运算调度的最小单位。 它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在一个程序里的一个执行路径就叫做线程。线程是一个进程内部的控制序列。一切进程至少有一个执行线程。线程在进程内部运行,本质是进程地址空间内运行。在Linux系统中,在cpu眼里,看到的PCB都有比传统的进程更加轻量化。
通过进程虚拟地址空间,可以看到进程大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。
线程为了让程序更能充分利用多核cpu资源。
创建一个新的进程,相当于开了一个新的厂子,成本比较高。(增加健壮性)。
创建一个新的线程,相当于在原厂子的基础上新增了一条生产线,成本比较低。
每次创建一个新的进程,就会分配一个新的虚拟地址空间(复制pcb)
每次创建一个新的线程,线程共用原来的虚拟地址空间。
线程是运行在进程之中的,一个进程包含着若干个线程。
线程进程都是pcb表示的,一个pcb表示线程也表示进程。
进程:资源的管理(管理内存,管理打开的文件…)
线程:调度和执行(和进程类似,也是抢占式的调度)
透过进程虚拟地址空间,就可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。
线程的优点
- 创建一个新的线程的代价要比创建一个新的进程小的多(虚拟地址空间不用复制)
- 与进程之间的切换相比,线程之间的切换需要