在 Go 的 GMP(goroutine, system thread, context)模型中,一个 goroutine 可能会产生许多对象并将它们放在 P(堆内存?)中,P 上的所有数据在停放时是否会复制到 G 的堆栈中?如果是这样,G 的栈可能会变得非常大,这使得 P 的设计显得毫无意义,但如果不是,调度器如何解决多个 G 的数据同时存储在 P 中的问题呢?如果 G 想在另一个 P 上执行,那是不可能的。我的问题是
当g停放时,所有数据都会复制到G'堆栈吗?
为什么在执行 G 时不把所有数据都放在 G 上?
翻翻过去那场雪
相关分类