协程是一种轻量级线程,通过显式切换在同一调用栈复用执行单元。其生命周期包括创建、执行、挂起、恢复和完成。创建协程使用 go 关键字,实战中可用于并行计算(如计算斐波那契数列)。
Golang协程的创建与生命周期
简介
协程是一种轻量级的线程,协程与线程类似,都是独立的执行单元。但与线程不同的是,协程不需要像线程那样拥有独立的调用栈,而是复用协程创建函数的调用栈,通过显式的将协程挂起(yield)或者恢复(resume)来进行切换。
创建协程
在 Go 中,使用 go
关键字来创建一个协程,其语法如下:
go <协程体>
登录后复制
其中,<协程体>
表示协程要执行的代码块。
协程的生命周期
协程的生命周期主要分为以下几个阶段:
- 创建:协程通过
go
关键字创建。 - 执行:协程开始执行其代码块。
- 挂起:协程通过调用
chan <-
或select
语句挂起。 - 恢复:协程通过
<-chan
或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协程的创建与生命周期的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:老板不要肥肉,转转请注明出处:https://www.dingdanghao.com/article/352302.html