进程和线程是什么?
首先你要理解cpu的概念,计算机上的全部操做都是由cpu来执行的,cpu将要执行的操做分为一个个的任务,这些任务咱们就能够理解为进程,而这些任务又分为一些细粒度更小的子任务,这些子任务就称做线程多线程
cpu轮流执行任务的,每个任务须要通过如下三个阶段:分布式
也就是说,每个进程从加载、执行,到切换下一个进程执行,都会经历一样的一个过程,咱们的cpu就是在无时无刻地进行这样的进程切换操做操作系统
而咱们又能够把进程分为一些细粒度更小的线程,这些线程之间也能够来回的切换,就像进程同样,可是却不须要加载和保存上下文的操做,由于这些线程都是共享上下文的线程
进程与线程的区别
这里为你们简单总结了一些进程和线程的区别,若有错误欢迎指正:队列
- 性质不一样:进程是资源分配的基本单位,线程是cpu执行运算和调度的基本单位
- 归属不一样:一个操做系统中能够有不少进程,一个进程能够有不少线程
- 开销不一样:进程建立、销毁和切换的开销都要远大于线程
- 拥有资源不一样:每一个进程都拥有本身的内存和资源,一个进程中的线程会共享这些内存和资源
- 通讯方式不一样:进程之间能够经过管道、消息队列、共享内存、信号量,以及Socket等机制实现通讯,线程之间主要经过共享变量及其变种形式实现通讯
- 控制和影响能力不一样:子进程没法控制父进程,一个进程发生异常时通常不会影响其余进程;子线程能够控制父线程,若是主线程发生异常,会影响其所在进程和其他线程
- 扩展能力不一样:多进程能够方便地扩展到多机分布式系统上,多线程想要扩展到多台机器上就很困难
- cpu利用率不一样:进程的cpu利用率低,由于须要额外的上下文切换开销;线程的cpu利用率高,由于切换简单
- 可靠性不一样:进程的可靠性要高于线程