通俗讲解

通俗讲解

通俗讲解-为什么协程要比线程快线程太重,协程太轻线程是操作系统内核管理的 “重量级选手”:创建销毁要过内核,占几 MB 内存,一个进程最多几千个。

协程是用户态的 “轻量级选手”:由 Go runtime 直接管理,初始栈只有几 KB 还能动态伸缩,百万级协程也不费资源。

线程切换太慢,协程切换飞快线程调度是内核来做,上下文切换要保存寄存器、内存映射等一堆状态,还得在内核态和用户态之间来回跳,一次切换几微秒。

协程由 Go 的调度器(P)在用户态调度,切换只需要保存程序计数器、栈指针这些关键信息,纳秒级就能完成,开销是线程的几十分之一。

线程调度笨,协程调度聪明线程全靠操作系统调度,容易扎堆在一个 CPU 核心上,或者遇到 IO 就整个线程挂起,白白浪费资源。

协程有 GMP 模型帮忙:每个 CPU 核心绑定一个调度器(P),自家任务做完了就去别的 P 那 “偷活干”;协程卡 IO 了,线程(M)会立刻解绑,让 P 带着新线程继续干活,绝不浪费 CPU。

相关推荐

Hadoop集群启动的四种方式
beat365体育官网平台

Hadoop集群启动的四种方式

📅 09-11 👁️ 1334