一、定义
进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程:是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可以和同属于一个进程的其他线程共享进程所拥有的的全部资源。
二、关系和区别
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。相对于进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他进程共享数据,但是拥有自己的栈空间,拥有独立的运行序列。
区别主要有以下几点:
调度:进程是拥有资源的基本单位,线程是调度和分派的基本单位。
共享地址空间:进程拥有各自独立的地址空间、资源,所以共享复杂,需要用IPC(Inter-Process Communication,进程间通信),但是同步简单。而线程共享所属进程的资源,因此共享简单,但是同步复杂,需要用加锁等措施。
占用内存和cpu:进程占用内存多,切换复杂,cpu利用率低;而线程占用内存少,切换简单,cpu利用率高。
互相影响:进程之间不会互相影响;而一个线程挂掉会导致整个进程挂掉。
参考博客:https://blog.csdn.net/M_joy666/article/details/80037735?spm=1001.2014.3001.5501