C/C++教程

进程 (process) 与线程 (thread) 的区别

本文主要是介绍进程 (process) 与线程 (thread) 的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进程(process)和 线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

今天在某小众技术论坛看到有人发帖,述说自己面试滴滴的经历。

其中提到面试过程中被问到 进程 跟 线程 的区别,一下子没回答上来导致面试失败了。

看到这里,我回想了一下 进程 和 线程 的相关知识,具体概念比较抽象。正好最近读到一篇材料,发现一个很好的类比,可以把它们以清晰易懂的方式解释。于是在这里记录下来。

 

首先看看标准的解释:

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

这个回答比较抽象,不太容易理解。有种似懂非懂的感觉。

 

为了便于理解做个简单的比喻:进程==火车,线程==车厢

  • 线程在进程下运行(车厢无法单独运行)
  • 一个进程可以包含多个线程(一辆火车可以有多个车厢)
  • 不同进程间的数据难以共享(很难从一辆火车上转移到另一辆火车上)
  • 同进程下的线程数据容易共享(车厢间的切换则很容易)
  • 进程要比线程更消耗资源(多个火车运行比一辆火车多个车厢要消耗更多资源)
  • 进程不会相互影响,线程容易影响进程(一列火车起火不会影响到另外一列火车,如果一间车厢起火容易影响整辆火车)

操作系统设计,大致可以归结为三点:

  • 允许多个任务同时运行,多进程形式
  • 单个任务分成不同部分运行,多线程形式
  • 提供协调机制,一方面防止进程之间和线上之间产生冲突,另一方面允许进程之间和线程之间共享资源。

 

这篇关于进程 (process) 与线程 (thread) 的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!