可以理解成为轻量级的进程,可增加并发度,减少并发带来的开销,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
线程的属性:
线程是处理机调度的单位,进程是资源分配的单位
多cpu计算机中,各个线程可占用不用的cpu
每个线程都有一个线程ID,线程控制块
线程也有就绪,阻塞,运行三种基本状态
线程几乎不拥有系统资源
同一进程的不同线程间共享进程的资源
由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
同一进程中的线程切换,不会引起进程切换
不同进程中的线程切换,会引起进程切换
切换同进程内的线程,系统开销很小而切换进程,系统开销很大
线程的实现方式
用户级线程
由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责。用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
内核级线程
内核级线程的管理工作由操作系统内核完成。线程调度,切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。