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

前端之家收集整理的这篇文章主要介绍了线程ID和进程ID之间的关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在进程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)的内存映射.

猜你在找的Linux相关文章