进程 (process) 与线程 (thread) 的区别
作者:互联网
进程(process)和 线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。
今天在某小众技术论坛看到有人发帖,述说自己面试滴滴的经历。
其中提到面试过程中被问到 进程 跟 线程 的区别,一下子没回答上来导致面试失败了。
看到这里,我回想了一下 进程 和 线程 的相关知识,具体概念比较抽象。正好最近读到一篇材料,发现一个很好的类比,可以把它们以清晰易懂的方式解释。于是在这里记录下来。
首先看看标准的解释:
"进程是资源分配的最小单位,线程是CPU调度的最小单位"
这个回答比较抽象,不太容易理解。有种似懂非懂的感觉。
为了便于理解做个简单的比喻:进程==火车,线程==车厢
- 线程在进程下运行(车厢无法单独运行)
- 一个进程可以包含多个线程(一辆火车可以有多个车厢)
- 不同进程间的数据难以共享(很难从一辆火车上转移到另一辆火车上)
- 同进程下的线程数据容易共享(车厢间的切换则很容易)
- 进程要比线程更消耗资源(多个火车运行比一辆火车多个车厢要消耗更多资源)
- 进程不会相互影响,线程容易影响进程(一列火车起火不会影响到另外一列火车,如果一间车厢起火容易影响整辆火车)
操作系统设计,大致可以归结为三点:
- 允许多个任务同时运行,多进程形式
- 单个任务分成不同部分运行,多线程形式
- 提供协调机制,一方面防止进程之间和线上之间产生冲突,另一方面允许进程之间和线程之间共享资源。
标签:火车,thread,process,多个,车厢,线程,进程,容易 来源: https://blog.csdn.net/anjing_jingan/article/details/116449820