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

时间:2015-09-24 02:25:57

标签: go concurrency

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

我相信Go并不只是为每个例程分叉一个新线程。

1 个答案:

答案 0 :(得分:3)

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

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