线程概念linux

何为线程:

线程是程序中负责执行的单位,它可以被看作是进程的一部分,是进程的子任务。线程与进程的区别在于,进程是一个资源单位,而线程是进程的一部分,它只有栈这个独立的资源,其他资源如代码段、数据段、堆、环境变量表等都是共享的。一个进程至少有一个线程(主线程),可以有多个线程。线程可以通过同步方式(如pthread_join函数等待)或异步方式(不与主线程有关,无法被等待)来执行

线程其实是进程的一个执行流

我们过去的进程认为是内核数据结构+进程代码与数据 

将这些的组合叫做进程,但是线程其实也是这样的组合结构

但是在linux中,我们认为线程其实也就是多个PCB共享除PCB以外的进程数据结构+代码数据。 

整个红框中的数据结构的集合我们叫做进程。如果进程只有一个PCB我们称之为单执行流进程

拥有多个PCB数据结构的进程,我们称之为多执行流进程。

 在linux操作系统中,我们并没有为线程独立开新的数据结构,而是复用了进程PCB数据块模拟线程。做到了一种复用逻辑,所以其实我们linux操作系统避免有线程的概念。

所以我们将进程线程统称为轻量级进程。

进程内的线程的pid相同,应为处于同一进程内,但是他们的tid不同(线程id

先写个代码

 运行函数

所有线程的pid都是相同的说明了,他们确实处于同一进程内

ps -L选项查看线程

PID:进程id

LWP:轻量级进程id号

多个线程PID相同,LWP号不同,确实创建了多个线程,而LWP与PID相同的线程,我们称之为主线程

线程与线程之间

在同一个进程中的线程,也是有着独立与共享的分别

线程独立拥有:

线程独立最重要的就是一组寄存器与栈。

一组寄存器是对上下文数据的保存,在轻量级进程调度的时候保证不会出错

栈是函数栈帧,保存该线程的工作环境与上级函数。

结论:

线程:是CPU调度的基本单位。

进程:是承担分配系统资源的基本实体单位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云的小站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值