参考:Linux公社 微信公众号文章
一、进程与线程的异同
1.进程是资源分配的基本单位,线程是系统调度的基本单位
2.进程是资源的集合,这些资源包括内存地址空间,文件描述符等,一个进程中的多个线程共享这些资源
3.CPU对任务进行调度时,可调度的基本单位是线程。如果一个进程中没有其他线程,可以理解为这个进程中只有一个主线程,该主线程独享进程的所有资源。
4.进程的个体间是完全独立的,线程间是彼此依存的并且共享资源。多进程环境中,任何一个进程的种植,不会影响到其他非子进程。而多线程环境中,父线程终止,全部子线程被迫终止。
二、各种ID
pid:进程id
tgid:线程组id,也就是线程组leader的pid,等于pid
tid/lwp:线程id,tid在系统提供的接口函数中更常用,lwp在用户态命令中常用(ps)
pgid:进程组id,也就是进程组leader的进程id