15.进程线程和协程的区别

  1. 15.进程线程和协程的区别
    1. 15.1 题目
    2. 15.2 深入解析
    3. 15.3 答题示例
    4. 15.4 关键词联想

15.进程线程和协程的区别


15.1 题目

进程和线程有什么区别?
线程和协程有什么区别?


15.2 深入解析

  1. 进程与线程

    • 进程是资源分配的最小单位,是一个独立的程序,拥有自己的内存、资源,多个进程间相互独立。
    • 线程是CPU调度的最小单位,是进程内的执行单元,多个线程共享进程的资源,且可以相互独立调度。
    • 线程是进程的一部分,一个进程可以包含多个线程;进程终止后,其中的线程也会终止。

    简单理解:进程就是一个应用程序,线程就是这个应用程序中用于执行逻辑的“管道”,线程至少有一个,也可以有多个。

  2. 线程与协程

    • 线程由操作系统调度,切换成本高;协程由程序自己调度,切换成本低。
    • 协程的本质是利用迭代器分时分步执行代码逻辑,实现非阻塞式任务切换。

15.3 答题示例

进程 vs 线程

  • 进程是资源分配的最小单位,每个进程拥有独立的地址空间、句柄与资源,相互隔离;
  • 线程是CPU调度的最小单位,属于进程内部执行单元,多个线程共享进程的内存和句柄,但执行上下文(如栈、寄存器)各自独立。

线程 vs 协程

  • 线程由操作系统内核调度,支持并行执行,切换时需保存和恢复完整上下文,开销较大;
  • 协程由程序或框架在用户态调度,同一线程内的“微线程”,依赖显式的挂起/恢复(如 yieldasync/await),上下文切换只需保存少量状态,成本低、无需内核干预,但无法利用多核并行。

在游戏或异步框架中,协程常用于非阻塞式任务分步执行(如帧间延迟、异步IO),而线程适用于真正并行的计算或阻塞型IO场景。


15.4 关键词联想

  • 进程隔离 vs 线程共享
  • 内核线程 vs 用户态协程
  • 上下文切换开销
  • 并发与并行
  • 协作式调度 vs 抢占式调度
  • async/await, yield
  • 共享内存与线程安全
  • Green threads / Fiber
  • 调度器(Scheduler)
  • 栈与寄存器状态保存


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏