文章目录
线程
60年代出现了进程。80年代中期开始出现了线程。
为什么要使用线程
解决进程并行遇到的问题:
- 进程之间如何通信以及共享数据
- 维护进程的系统开销较大:
- 创建进程时,分配资源、建立PCB
- 撤销进程时,需要回收资源、撤销PCB
- 进程切换时,保存进程的状态信息
需要提出一种新的具备以下特性的实体:
- 实体之间可以并发执行
- 实体之间共享相同的地址空间
什么是线程
线程定义:线程是进程当中的一条执行流程。
此后就可以将进程拆分为两部分:资源管理和线程。
线程共享进程的资源。
个人感觉可以理解为Java中内部类和外部类的关系,内部类可以直接访问外部类的所有资源。
从资源组合的角度来说,进程将一组喜爱那个管的资源组合起来,构成了一个资源平台(环境),包括地址空间(代码段、数据段)、打开的文件等各种资源。
从运行的角度来说,代码在这个资源平台上的一条执行流程(线程)。
线程由自己的TCB(线程控制块):包括PC(程序计数器)、SP(堆栈)、State(状态)