线程的基本概念(一)

一、线程基本概念

线程是一个程序里的一个执行路线。
进程是一组线程
从资源分配角度:
1.进程(线程组)是资源管理分配的最小单位
2.线程(轻量级进程)是调度或执行的最小单位
之前介绍的都是单线程进程,即一个进程中只有一个线程,
一个线程拥有一个pcb,那么一个进程就拥有一组pcb
线程的基本概念(一)

线程的基本概念(一)

线程之间数据的共享和私有关系;

共享:
1.同一块地址空间,所以代码、全局数据、堆栈都是共享的(在某个线程中定义一个全局变量,在各个线程中都可以访问到)
2.文件描述符表
3.每种信号处理方式
独有:
1.栈
2.线程上下文(一组寄存器)
3.信号屏蔽字

线程的优缺点(进程和线程的比较):

优点:
1.线程效率更高
能充分利用cpu资源,并行处理
体现为占用资源少(共享地址空间)
切换比较快
多线程多用于cpu密集(多处理器上运行,将计算分解到多个线程中)
用于I/O密集的程序中(线程可以同时等待不同的I/O操作)
缺点:
1.编码,调试复杂
2.缺乏访问控制,一个线程崩溃,导致整个进程都终止

看一个例子来说明进程和线程

线程的基本概念(一)

线程的基本概念(一)
很明显一个房间中的位子(cpu资源)是有限的,能坐下的滑稽是有限的(cpu资源有限,并不是线程越多越好),而且当多个滑稽同时要吃一个妖怪时,就发生了争夺。
从资源这里看,多线程只是多利用一个滑稽,二多进程还要多一个房间,多一张桌子。