Golang 的 Go Routine 背后的架构是什么?

Bho*_*sut 1 concurrency go

Golang 的 Go Routine 背后的架构是什么?

我相信 Go 不仅仅为每个例程创建一个新线程。

Ian*_*lor 5

过去有一些 Go 实现实际上为每个 goroutine 创建了一个新线程。

在主要的 Go 实现中,Go 例程基本上只是一个带有一些附加上下文的堆栈(通常很小)(在 1.5 中,请参阅type gruntime/runtime2.go)。从 Goroutine 更改为另一个 Goroutine 意味着更改堆栈指针和指向当前运行的 Goroutine 的线程局部变量。