进程是资源分配的基本单位,而线程是 CPU 调度的基本单位。
一个线程从属于一个进程,当然一个进程可以创建多个线程。
一个进程中的多个线程共享进程的栈空间(当然也有其他一些资源),但是每一个线程也可以有自己的栈空间,叫 TLS(线程本地存储);
如果一个进程中没有显式地创建一个线程,那么就是所谓的单线程进程,其实也就是 main 执行流对应的线程。
ps:UNIX 系统的进程和线程和前面的说法也基本一致,但是 Linux 却特殊一点,特殊到哪一点呢?
似乎没有进程和线程的明确划分,都是线程,只不过有些线程就是共享一些数据(类似于线程共享进程的数据)。