如何通俗易懂的区分「进程」与「线程」?
先看定义:
进程是资源分配的最小单位。
线程是 CPU 调度的最小单位。
看完定义是不是一脸懵,没关系,我给你举个例子。
现在某地有一个巨大的「沙石场」,里面存放着很多沙子、石子、水泥等资源,为此还专门修了一个火车站来解决运输问题。
每当有客户有需求的时候,沙石场就派单独一列火车装上货物送过去,然后列车返回车站等待下一次派遣。
由于是大批量运输和交易,所以沙石场只允许最小购买量为一车厢。有时顾客只要一车厢沙子,那么火车就只有一节车厢。
也有时顾客需要两车厢沙子和三车厢石子,火车就有五节长长的车厢。
因此,一列火车就是沙石场分配给客户运输货物的最小单位,车厢就是客户订购货物的最小单位。
大致可以理解为:
火车就是进程。
车厢就是线程。
如果非要用一句话来区分,那就是:进程 >= 线程
。
目的
引入进程是为了使程序能够与其他程序并发执行,以提高资源利用率。
引入线程是为了减小程序在并发执行时的时空开销,以提高操作系统的并发性能。
参考
如何通俗易懂的区分「进程」与「线程」?
https://blog.ailln.com/v2ai/2020/03/12/linux/14-process-and-thread/