进程 (process) 与线程 (thread) 的区别
2021/5/7 7:29:50
本文主要是介绍进程 (process) 与线程 (thread) 的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
进程(process)和 线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。
今天在某小众技术论坛看到有人发帖,述说自己面试滴滴的经历。
其中提到面试过程中被问到 进程 跟 线程 的区别,一下子没回答上来导致面试失败了。
看到这里,我回想了一下 进程 和 线程 的相关知识,具体概念比较抽象。正好最近读到一篇材料,发现一个很好的类比,可以把它们以清晰易懂的方式解释。于是在这里记录下来。
首先看看标准的解释:
"进程是资源分配的最小单位,线程是CPU调度的最小单位"
这个回答比较抽象,不太容易理解。有种似懂非懂的感觉。
为了便于理解做个简单的比喻:进程==火车,线程==车厢
- 线程在进程下运行(车厢无法单独运行)
- 一个进程可以包含多个线程(一辆火车可以有多个车厢)
- 不同进程间的数据难以共享(很难从一辆火车上转移到另一辆火车上)
- 同进程下的线程数据容易共享(车厢间的切换则很容易)
- 进程要比线程更消耗资源(多个火车运行比一辆火车多个车厢要消耗更多资源)
- 进程不会相互影响,线程容易影响进程(一列火车起火不会影响到另外一列火车,如果一间车厢起火容易影响整辆火车)
操作系统设计,大致可以归结为三点:
- 允许多个任务同时运行,多进程形式
- 单个任务分成不同部分运行,多线程形式
- 提供协调机制,一方面防止进程之间和线上之间产生冲突,另一方面允许进程之间和线程之间共享资源。
这篇关于进程 (process) 与线程 (thread) 的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!