在 Go 语言中,协程(goroutine)是实现并发的核心机制。它是 Go 语言对线程的轻量级抽象,可以在程序中并发地执行多个任务。通过 goroutine,Go 可以高效地进行并发执行,并且相比传统操作系统线程更加轻量。 Go 协程(goroutine)的结构 1. Goroutine 是用户级线程 Goroutine 是 Go 语言的并发执行单位,类似于线程,但是比线程要轻量级得多。 在 Go 中,使用 go 关键字来启动一个新的 Goroutine。例如: go func() { // 执行的任务 }() 这将创建一个新的 Goroutine 来执行指定的函数,Go 运行时调度器会自动将这个任务分配到合适的处理器(P)上。 2. 每个 Goroutine 都有一个独立的栈 每个 Goroutine 在启动时会分配一个小的初始栈空间(大约 2KB)。 由于 Go 的栈是动态增长的,当 Goroutine 执行的任务需要更多的栈空间时,Go 会自动扩展栈。 这种设计使得创建大量的 Goroutine 比使用操作系统线程更加高效。 3. Goroutine 与 M、P 的关系(GM.... go协程初识 goroutine