博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
浅谈Go的GMP模型
为什么需要 GMP?根本问题:如何用少量 OS 线程,高效运行海量并发任务? 操作系统线程很重(栈默认 1-8MB,切换需要内核介入,创建销毁开销大)。但我们想要能轻松启动 百万级并发 的语言。 这逼出了一个核心设计决策:在用户态实现调度。 三个核心实体G(Goroutine)— 任务 用户态”线程”,初始栈仅 2-4KB,可动态增长 本质是一个描述”待执行函数”的结构体 状态:Runn...
2026-05-03
Go
Go
Read More
浅谈Go语言中的Channel
1. 根本问题:并发程序如何安全地共享数据?并发的本质矛盾是:多个执行流(goroutine)需要协作,但同时访问共享内存会导致数据竞争。 解决思路有两条: 共享内存 + 锁:大家都能访问,但要抢锁(mutex) 消息传递:数据的所有权随消息转移,不共享 Go 选择了后者,并将其哲学浓缩为一句话: “Don’t communicate by sharing memory; share ...
2026-05-03
Go
Go
Read More