加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

线程ID和进程ID之间的关系

发布时间:2020-12-13 19:12:17 所属栏目:Linux 来源:网络整理
导读:我在进程ID和线程ID之间有一些混淆.我已经经历了几个网络帖子,包括堆栈溢出here,其中说 starting a new process gives you a new PID and a new TGID,while starting a new thread gives you a new PID while maintaining the same TGID. 所以当我运行程序时

我在进程ID和线程ID之间有一些混淆.我已经经历了几个网络帖子,包括堆栈溢出here,其中说

starting a new process gives you a new PID and a new TGID,while starting a new thread gives you a new PID while maintaining the same TGID.

所以当我运行程序时为什么从程序创建的所有线程都没有不同的PID?

我知道在编程中我们通常会说main是一个线程,执行从main开始,所以如果我从main创建多个线程,所有线程将具有相同的PID,它等于main的PID.

所以我想问的是如下:

1)当我们运行程序时,它将作为进程或线程运行?

2)主线程创建线程和进程创建线程之间有什么区别吗?

3)linux中的线程和进程有什么区别吗?因为我读到某个地方,linux没有区分线程和进程.

最佳答案
简化一下:

> PID是进程ID,TID是线程ID.问题是对于fork()创建的第一个线程,PID = TID.如果使用clone()命令在进程中创建更多线程,则PID和TID将不同,PID将始终小于TID.
>不,没有区别,除非主要被杀,所有其他线程也被杀死.
>是的,线程是实际安排的.从技术上讲,该过程只是不同代码段(文本,bss,堆栈,堆和OS)的内存映射.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读