进程:进程是系统分配资源和调度的基本单位,也就是说进程可以单独运行一段程序。
线程:线程是cpu调度和分派的最小基本单位。
区别:
1.一个进程可以包含至少一个线程,一般来说也就是主线程,而一个线程只能属于一个进程;
2.进程拥有独立的内存,而线程没有独立的资源空间, 只是暂时存储在计数器,寄存器,栈中,同一个进程间的线程可以共享资源。
3.将代码放入到代码区之后,进程产生,但还没执行,我们所说的执行一般是是主线程main函数开始执行。
4.进程比线程更加消耗资源
5.进程对资源的保护要求高,而线程要求不高
6.进程是处理器这一层面的抽象,而线程是进程的基础上进一步并发的抽象
7.同一个进程下,一个线程的挂掉,会导致整个进程的挂掉,而进程之间不会相互影响
8.总的来说:我们都知道程序不能单独运行,只有将它放入内存中,分配资源才能运行,程序是指令的集合,而进程是程序的一次执行活动,属于动态概念
9.我们可以打个比方:进程相当于某一个大型项目,世界上可能有人同时在做这个项目,有其独特的方式;而线程就相当于这个项目下的一些程序员,多个程序员去完成这一个项目肯定要比一个人完成快的多,也就是能在同一时间操作。
决定同步:
1.互斥锁:同一个进程下,当某个线程使用进程的共享资源时,其他线程必须等待该线程结束
2.信号量:进程拥有同一时间最大访问数量