- 阮一峰老师的解释清晰易懂:
- CPU相当于一个工厂,时刻在运行,在生产。
- 进程就相当于工厂中的一个车间
- 线程就相当于车间中的很多工人。他们协同完成一个任务。
接下来详细说说进程和线程有什么区别?
- 进程(Process)是系统进行资源分配和调度的基本单位,
线程(Thread)是CPU调度和分派的基本单位; - 线程依赖于进程而存在,一个进程至少有一个线程;
- 进程有自己的独立地址空间,
线程共享所属进程的地址空间; - 进程是拥有系统资源的一个独立单位,
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等; - 进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,
线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可见,进程切换的开销远大于线程切换的开销; - 线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行;
- 多线程程序只要有一个线程崩溃,整个程序就崩溃了,
但多进程程序中一个进程崩溃并不会对其它进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮
网友评论