说一下我的理解吧,供参考。 进程(Process)感觉是操作系统任务的资源管理单位,资源管理的一个重点就是隔离,例如不同进程的地址空间是单独的,内部的状态(PCB)也是互相独立的。 线程(Thread)更像是计算机系统中通用的执行流调度单位。例如从CPU角度上说,我们可以称不同的CPU上下文(寄存器等)为一个硬件级线程(参考超线程等技术,以及x86中的TSS寄存器,虽然现在没有用来做任务切换了)。从操作系统角度考虑一个线程是一个可调度的任务,可以分为内核级线程和用户态线程。从用户态的程序例如语言虚拟机考虑,一个线程也是当前要执行的上下文,例如C中的setjmp和longjmp以及高级语言中的协程。 具体拿Linux来说,内核在实现上不区分线程和进程,线程(Pthread实现)只不过是clone系统调用中flag参数加上了共享地址空间等标识。