当一个 goroutine 阻塞或挂起时,其栈上的局部变量(例如闭包捕获的变量)会不会被保存下来,从而在恢复执行时保持原值?请结合 Go 的调度模型说明。
考察说明
考察对 Go 运行时调度、goroutine 栈结构与闭包捕获机制的理解
回答思路
- 能说明 goroutine 以栈形式保存挂起时的执行状态
- 能指出局部变量在栈上,随栈保存,恢复时原值保留
- 能区分逃逸变量被分配在堆上,但引用仍被栈保存
- 能结合协程非抢占式切换与运行时调度说明栈切换机制
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。