15.进程线程和协程的区别
15.1 题目
进程和线程有什么区别?
线程和协程有什么区别?
15.2 深入解析
进程与线程
- 进程是资源分配的最小单位,是一个独立的程序,拥有自己的内存、资源,多个进程间相互独立。
- 线程是CPU调度的最小单位,是进程内的执行单元,多个线程共享进程的资源,且可以相互独立调度。
- 线程是进程的一部分,一个进程可以包含多个线程;进程终止后,其中的线程也会终止。
简单理解:进程就是一个应用程序,线程就是这个应用程序中用于执行逻辑的“管道”,线程至少有一个,也可以有多个。
线程与协程
- 线程由操作系统调度,切换成本高;协程由程序自己调度,切换成本低。
- 协程的本质是利用迭代器分时分步执行代码逻辑,实现非阻塞式任务切换。
15.3 答题示例
进程 vs 线程
- 进程是资源分配的最小单位,每个进程拥有独立的地址空间、句柄与资源,相互隔离;
- 线程是CPU调度的最小单位,属于进程内部执行单元,多个线程共享进程的内存和句柄,但执行上下文(如栈、寄存器)各自独立。
线程 vs 协程
- 线程由操作系统内核调度,支持并行执行,切换时需保存和恢复完整上下文,开销较大;
- 协程由程序或框架在用户态调度,同一线程内的“微线程”,依赖显式的挂起/恢复(如
yield或async/await),上下文切换只需保存少量状态,成本低、无需内核干预,但无法利用多核并行。在游戏或异步框架中,协程常用于非阻塞式任务分步执行(如帧间延迟、异步IO),而线程适用于真正并行的计算或阻塞型IO场景。
15.4 关键词联想
- 进程隔离 vs 线程共享
- 内核线程 vs 用户态协程
- 上下文切换开销
- 并发与并行
- 协作式调度 vs 抢占式调度
- async/await, yield
- 共享内存与线程安全
- Green threads / Fiber
- 调度器(Scheduler)
- 栈与寄存器状态保存
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com