Go goroutine 与线程的区别?为什么能支撑十万级高并发
① 内存:goroutine 初始栈仅 2-4KB 可动态增长(最大 1GB),线程栈固定 MB 级;② 调度:goroutine 由 Go 运行时用户态调度(GMP),线程由内核调度,goroutine 切换成本远低于线程;③ 数量:单机可开数十万 goroutine,线程数千就到极限;④ 通信:goroutine 用 channel 协作,线程常用锁;⑤ 创建:go 关键字极快(~100ns),线程创建 μs 级。goroutine 是“轻量线程”,但最终跑在线程上。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。