首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通俗讲解-为什么协程要比线程快

通俗讲解-为什么协程要比线程快

作者头像
GeekLiHua
发布2025-07-23 09:08:05
发布2025-07-23 09:08:05
1410
举报
文章被收录于专栏:JavaJava

通俗讲解-为什么协程要比线程快

线程太重,协程太轻

线程是操作系统内核管理的 “重量级选手”:创建销毁要过内核,占几 MB 内存,一个进程最多几千个。 协程是用户态的 “轻量级选手”:由 Go runtime 直接管理,初始栈只有几 KB 还能动态伸缩,百万级协程也不费资源。

线程切换太慢,协程切换飞快

线程调度是内核来做,上下文切换要保存寄存器、内存映射等一堆状态,还得在内核态和用户态之间来回跳,一次切换几微秒。 协程由 Go 的调度器(P)在用户态调度,切换只需要保存程序计数器、栈指针这些关键信息,纳秒级就能完成,开销是线程的几十分之一。

线程调度笨,协程调度聪明

线程全靠操作系统调度,容易扎堆在一个 CPU 核心上,或者遇到 IO 就整个线程挂起,白白浪费资源。 协程有 GMP 模型帮忙:每个 CPU 核心绑定一个调度器(P),自家任务做完了就去别的 P 那 “偷活干”;协程卡 IO 了,线程(M)会立刻解绑,让 P 带着新线程继续干活,绝不浪费 CPU。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通俗讲解-为什么协程要比线程快
    • 线程太重,协程太轻
    • 线程切换太慢,协程切换飞快
    • 线程调度笨,协程调度聪明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档