扫码关注微信公众号
回复“面试手册”,获取本站PDF版
回复“简历”,获取高质量简历模板
回复“加群”,加入程序员交流群
回复“电子书”,获取程序员类电子书
这三者的区别是一个比一个”小“的,一个进程可以包含多个线程,一个线程也可以包含多个协程。
进程:进程是资源调度的基本单位,运行一个可执行程序会创建一个或多个进程
线程:线程是程序执行的基本单位,是轻量级的进程
协程:是一种比线程更加轻量级的存在,协程是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处继续运行
值得注意的是,多进程(多线程)在多核CPU上是可以并行的,但一个线程内的多个协程的运行是串行的,下面看下具体的区别
进程 | 线程 | 协程 | |
---|---|---|---|
切换者 | 操纵系统 | 操纵系统 | 用户 |
切换时机 | 操作系统的切换策略决定 | 操作系统的切换策略决定 | 用户决定 |
切换内容 | 页全局目录、内核栈、硬件上下文 | 内核栈、硬件上下文 | 硬件上下文 |
切换内容的保存 | 内核栈 | 内核栈 | 用户栈/堆 |
切换过程 | 用户态-内核态-用户态 | 用户态-内核态-用户态 | 用户态 |
并发问题 | 不同进程之间切换实现并发,各自占有CPU实现并行 | 一个进程内部的多个线程并发执行 | 串行执行 |
系统开销 | 很大 | 较小 | 很小 |
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版