协程是一种轻量级线程,通过显式切换在同一调用栈复用执行单元。其生命周期包括创建、执行、挂起、恢复和完成。创建协程使用 go 关键字,实战中可用于并行计算(如计算斐波那契数列)。
Golang协程的创建与生命周期
简介
协程是一种轻量级的线程,协程与线程类似,都是独立的执行单元。但与线程不同的是,协程不需要像线程那样拥有独立的调用栈,而是复用协程创建函数的调用栈,通过显式的将协程挂起(yield)或者恢复(resume)来进行切换。
创建协程
在 Go 中,使用 go
关键字来创建一个协程,其语法如下:
go <协程体>
其中, 表示协程要执行的代码块。
协程的生命周期
协程的生命周期主要分为以下几个阶段:
go
关键字创建。chan 或 <code>select
语句挂起。
或 <code>select
语句恢复。
close(chan)
。实战案例
以下是一个使用协程计算斐波那契数列的示例:
package main import "fmt" func main() { // 创建一个协程计算斐波那契数列 go func() { first, second := 0, 1 for i := 0; i < 10; i++ { fmt.Println(first) temp := first first = second second = temp + second } }() // 主协程等待其他协程执行完成 <-make(chan bool) }
在该示例中,我们创建一个 goroutine 来计算斐波那契数列。主协程使用 make(chan bool)
创建一个无缓冲通道,并等待该通道被关闭。当 goroutine 完成计算时,它会关闭通道,从而通知主协程结束。
以上是Golang协程的创建与生命周期的详细内容。更多信息请关注PHP中文网其他相关文章!