线程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常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...