코루틴은 명시적 전환을 통해 동일한 호출 스택의 실행 단위를 재사용하는 경량 스레드입니다. 수명주기에는 생성, 실행, 일시 중지, 복구 및 완료가 포함됩니다. go 키워드를 사용하여 실제로 병렬 계산(예: 피보나치 수 계산)에 사용할 수 있는 코루틴을 만듭니다.
Golang 코루틴 생성 및 수명 주기
소개
코루틴은 스레드와 유사하며 독립적인 실행 단위입니다. 그러나 스레드와 달리 코루틴은 스레드처럼 독립적인 호출 스택을 가질 필요가 없으며 대신 코루틴을 명시적으로 일시 중지(yield)하거나 재개(resume)하여 코루틴 생성 함수의 호출 스택을 재사용합니다.
코루틴 만들기
Go에서는 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)
rrreee
는 코루틴이 실행할 코드 블록을 나타냅니다. 🎜🎜🎜코루틴의 수명주기🎜🎜🎜코루틴의 수명주기는 크게 다음 단계로 구분됩니다. 🎜<ul>
<li>🎜생성: 🎜코루틴은 <code>go
를 통해 생성됩니다. > 키워드.
chan 또는 <code>select
문을 호출하여 일시 중지됩니다.
또는 <code>select
문을 통해 복원됩니다.
close(chan)
가 호출됩니다. make(chan bool)
를 사용하여 버퍼링되지 않은 채널을 생성하고 채널이 닫힐 때까지 기다립니다. 고루틴은 계산을 완료하면 채널을 닫고 이를 통해 기본 고루틴에 종료를 알립니다. 🎜위 내용은 Golang 코루틴의 생성 및 수명 주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!