进程与线程的区别
程序与进程
- 程序就是我们平时说的代码(静态的)
- 进程是程序的一次执行过程(即把代码装载到内存中跑一次,是动态的)
进程与线程的区别
- 1.从定义上区分:
- 进程是程序的一次执行过程,是程序执行的最小单位
- 线程是资源分配的基本单位,是调度运行的基本单位,是系统中并发执行的单位
!可以这么理解,一段代码跑一趟这一趟就是一个进程,代码中的一条执行路径就是该进程中的一个线程
-
2.一个线程只能属于一个进程,一个进程能够拥有多个进程;多线程就是允许一个进程在同一时刻执行多个任务
-
3.从内存空间分配来看:
- 进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间。
- 线程没有地址空间,线程包含在进程的地址空间中。
-
4.从资源消耗情况来看
- CPU切换一个线程比切换进程花费小
- 创建一个线程比进程开销小
- 线程占用的资源要⽐进程少很多
-
5.从通信角度来看
- 线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数据,进程之间的通信需要以通信的方式(IPC)进行
-
6.安全性角度
- 多进程程序更安全,生命力更强,一个进程死掉不会对另一个进程造成影响(源于有独立的地址空间),多线程程序更不易维护,一个线程死掉,整个进程就死掉了(因为共享地址空间)
-
7.资源保护的角度
- 进程对资源保护要求高,开销大,效率相对较低,线程资源保护要求不高,但开销小,效率高,可频繁切换