轻量级进程(线程)ID与进程ID

在Linux操作系统中,线程被实现为轻量级进程,每个用户态线程在内核中都有独立的调度实体和进程描述符。线程组的概念由此产生,以解决多线程进程中线程ID与进程ID的关系问题。线程组内的所有线程共享相同的线程组ID,主线程的线程ID等于进程ID。线程间的调度和通信不涉及父子关系,而是对等的。
摘要由CSDN通过智能技术生成

在Linux下,线程又被称为轻量级进程。
每一个用户态的线程,在内核中都对应一个调度实体,也拥有自己的进程描述符(task_struct结构体)。 没有线程之前,一个进程对应内核中一个进程描述符,对应一个进程ID。但是引入线程的概念之后,一个用户进程下管辖N个用户态线程。每个线程作为一个独立的调度的实体,在内核态中都有自己的进程描述符,进程和内核描述符一下变成了1:N的关系。POSIX标准又要求同一进程中的线程调用getpid函数时返回相同的进程ID, 于是Linux内核就引入了线程组的概念。多线程的进程,又被称为 线程组。线程组内每一个线程在内核中都有一个进程描述符(task_sruct)与之对应,且进程描述符结构体中的pid对应的是线程id,而非进程id。进程描述符中的tgid含义是Thread Group ID,对应的是用户级的进程id。线程组内存在一个线程ID与进程ID相等,该线程即为线程组的主线程。
线程组内的其他线程ID则由内核分配,但是线程组ID和主线程的线程组ID一样,无论是主线程创建新线程,还是新线程再创建新线程,都是这样。但是线程与进程不一样,进程间有父子关系,但是线程之间均为对等关系,即 同一个线程组的线程,没有层次关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值