知识卡片
G不是执行体
内容
Goroutine 的 G 保存并发任务状态和栈,真正执行由绑定 P 的 M 完成。发散:把状态从线程中抽离,才有跨线程调度和海量并发的空间。呼应[[Goroutine轻量并发]]对协程轻量特性的描述。
参考来源
- 位置:《Go语言入门到实战(共3册)》第43章《Go语言学习笔记:第18章 并发调度》(源文件:_epub-src/text/part0112.html)
- 结论依据:原文围绕“G并非执行体”给出定义、机制、流程、对比或限制条件,本卡片据此提炼可迁移的语言/工程结论,并补充了边界或实践启发。
- 原始内容:,进程内的一切都在以goroutine(简称G)方式运行,包括运行时相关服务,以及main.main入口函数。需要指出,G并非执行体,它仅仅保存并发任务状态,为任务执行提供所需栈内存空间。G任务创建后被放置在P本地队列或全局队列,等待工作线程调度执行。 实际执行体是系统线程(简称M),它和P绑定,以……