DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

Go goroutine 与线程的区别?为什么能支撑十万级高并发

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

① 内存:goroutine 初始栈仅 2-4KB 可动态增长(最大 1GB),线程栈固定 MB 级;② 调度:goroutine 由 Go 运行时用户态调度(GMP),线程由内核调度,goroutine 切换成本远低于线程;③ 数量:单机可开数十万 goroutine,线程数千就到极限;④ 通信:goroutine 用 channel 协作,线程常用锁;⑤ 创建:go 关键字极快(~100ns),线程创建 μs 级。goroutine 是“轻量线程”,但最终跑在线程上。

下载推广海报

圈内讨论推广海报

《Go goroutine 与线程的区别?为什么能支撑十万级高并发》完整推广海报
REPLIES

回复

0 条回复
暂无回复。