Go goroutine 与线程的区别?为什么能支撑十万级高并发
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
① 内存:goroutine 初始栈仅 2-4KB 可动态增长(最大 1GB),线程栈固定 MB 级;② 调度:goroutine 由 Go 运行时用户态调度(GMP),线程由内核调度,goroutine 切换成本远低于线程;③ 数量:单机可开数十万 goroutine,线程数千就到极限;④ 通信:goroutine 用 channel 协作,线程常用锁;⑤ 创建:go 关键字极快(~100ns),线程创建 μs 级。goroutine 是“轻量线程”,但最终跑在线程上。
回复
0 条回复