进程与线程的区别
进程是系统进行资源分配和调度的基本单位;线程是CPU调度和分派的基本单位。
进程是拥有系统资源的一个独立单位;而线程自己基本不拥有系统资源,和其他线程共享本进程的相关资源如内存,I/O,cpu等。
进程有自己独立的地址空间,线程共享所属进程的地址空间 。
线程依赖于进程存在,一个进程至少有一个线程。
在进程切换时,涉及到整个当前进程CPU环境的设置以及新被调度运行的进程CPU环境的设置;而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作。可见进程切换的开销远大于线程切换的开销。
线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行。
多线程程序只要有一个线程崩溃,整个程序就崩溃了;但多进程程序中一个进程崩溃不会对其他进程造成影响,因为进程有自己的独立地址空间。