线程概念

一、线程的基本概念
1 线程是进程的地址空间内运行的执行流;
2 线程的执行流比进程的更细;
3 线程与线程之间的大部分资源的共享的(这也就是临界资源);
4 线程的创建比进程更轻量级,所以 创建和释放 的成本更小
5 线程的 调度 比进程成本小

但是!!
在运行期间,进程内只要有一个线程出错,整个进程也就出错,所以其他线程也会出错,这就导致 线程没有进程安全

所以,线程与进程相比,更加高效,但也没有进程安全。(进程之间的相互独立的)

【有一点要声明】:线程应该有自己的TCB(task_struct),但在Liunx中是用PCB模拟的TCB,即:没有TCB,所以在Linux中线程就称为轻量级进程(这也就是为什么上面图片中写的是线程(轻量级进程))。

【总结】进程是资源分配的基本实体,线程是调度的基本单位

二、线程的私有资源和共享资源
    上面说到,线程之间有很多的共享资源,但线程也需要有只属于自己的资源,那这都是什么呢?
1 线程的私有资源
(1)线程ID
(2)自己独立的上下文(寄存器)
(3)栈(存放该线程内的临时变量)
(4)错误码errno
(5)信号屏蔽字
(6)调度优先级

2 线程间的共享资源
(1)同一地址空间
(2)同一文件描述符
(3)对每种信号的处理方式
(4)......

三、线程的优点和缺点
1 线程的优点
(1)创建和释放的成本小
(2)调度的成本小
(3)线程占用的资源比进程少
(4)比进程更加细化,能够充分利用多处理器并发的数量

2 线程的缺点
(1)健壮性降低:线程之间是缺乏保护的,进程中一个线程出错会导致其他所有线程出错;
(2)性能降低:线程比进程更加细化,那么线程间的互相调度也更加频繁;
(3)缺乏访问控制:由于线程的健壮性低,需要引入同步互斥来维护它。

猜你喜欢

转载自blog.csdn.net/weixin_39294633/article/details/80037181