线程和进程的区别

  • 进程是资源分配的最小单位,线程是 CPU 调度的最小单位。

转自知乎

把进程比作火车,线程比作车厢

  • 线程在进程下进行(车厢无法脱离火车进行)
  • 一个进程可以有多个线程(火车有多个车厢)
  • 不同进程间的数据难进行共享(火车之间的乘客难以随意换乘)
  • 同一个进程下,不同的线程之间的数据容易共享(从一个车厢走到另一个车厢)
  • 进程比线程消耗更多的资源(多个火车比多个车厢耗资源)
  • 进程之间不会相互影响,但是一个线程挂掉将影响整个进程挂掉(两列火车之间不会影响,但是一个车厢出问题会影响整列火车)(这个不一定,Java 中是个例外)
  • 进程可以拓展到多机,线程最适合多核(知乎的原文应该有误)(不同火车开在多个轨道上,同一火车的车厢只能在一个轨道上(所以适合单机多核))
  • 进程使用的内存地址可以上锁,某些线程使用某些共享内存时,其他线程必须等待(如火车上的洗手间) – 互斥锁
  • 进程使用的内存地址可以限定使用量(火车上的餐厅,最多允许多少人在里面,人满的时候需要等待) – 信号量

转一张图:

在这里插入图片描述

posted @ 2020-07-25 18:03  winechord  阅读(94)  评论(0编辑  收藏  举报