一、二者定义
进程:进程具有一定独立功能的程序关于某些数据结合上的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。
线程:线程是进程的一个实体,是进程内部的一条执行序列,是CPU调度和分派的基本单位。一个进程至少有一条线程。main函数的执行序列为主线程,通过线程创建函数创建并调用的执行序列位函数线程。
进程是一个正在运行的程序(动态);线程是进程内部的一条执行路径序列;
二、二者区别
1、进程有独立的地址空间,一个进程崩溃后,不会对其他程序产生影响,线程只有自己的栈和局部变量,没有单独的地址空间。
2、一个进程中的所有线程共享全局数据、堆数据,以及进程PCB中的资源,所以线程通信线程间通讯相对比较容易。而进程之间是相互独立的。要想通讯就不需借助特殊的方式。对于一些要求同一个进程并且又要共享某些变量的并发造作,只能用线程,不能用进程。
3、线程切换时,消耗资源较少,效率较高。进程切换时,消耗资源较大,效率差一点。
4、每个独立的进程都有一个程序运行的入口,顺序执行序列和程序出口。但是线程不能够独立执行,必须依赖于进程中,由进程提供多个线程执行控制。
5、从分配资源上是进程属性,从调度、执行上是线程。