进程就是线程的容器,包含存储器资源等,而线程利用进程里的资源执行代码,最终产生结果。
例子:房子是一个容器(这里比作进程),房子有建筑面积、房间数量等(这里看做属性),房子里面有人(这里比作线程)。但是房子本身没有主动去做任何事情,人在房子里面工作、吃饭、睡觉(这些可以看成线程利用进程里的资源执行各种操作)。
起源不同 :现有进程后有线程
概念不同: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统资源分配的基本单位,线程是CPU调度单位。
内存共享方式不同:
默认情况下内存无法与其他进程共享线程可共享操作系统分配给其父进程的相同内存块拥有资源不同:
进程拥有独立的内存,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、栈等),但它可以与同属一个进程的其他线程共享该进程所拥有的全部资源。线程共享的内容: 进程的代码段 (重)进程的公有数据 (重)进程用户的ID与用户的ID (重)进程打开的文件描述符信号的处理器进程当前的目录 线程独有的内容: 线程的ID寄存器组的值线程的堆栈错误返回代码线程的信号屏蔽码数量不同: 一个程序至少一个线程,一个线程至少一个线程
开销不同:
线程的创建、终止时间比进程短同一个进程内的线程切换时间比进程切换短同一个进程内的各个线程间共享和文件资源,可以不通过内核通信。