Coroutine est un thread léger qui réutilise les unités d'exécution dans la même pile d'appels via une commutation explicite. Son cycle de vie comprend la création, l'exécution, la suspension, la récupération et l'achèvement. Utilisez le mot-clé go pour créer une coroutine, qui peut être utilisée pour des calculs parallèles (tels que le calcul des nombres de Fibonacci) dans la pratique.
Création et cycle de vie des coroutines Golang
Introduction
Les coroutines sont des threads légers sont similaires aux threads et sont des unités d'exécution indépendantes. Mais contrairement aux threads, les coroutines n'ont pas besoin d'avoir des piles d'appels indépendantes comme les threads. Au lieu de cela, elles réutilisent les piles d'appels des fonctions de création de coroutines en suspendant (rendant) ou en reprenant (reprenant) explicitement la coroutine.
Créer une coroutine
Dans Go, utilisez le mot-clé go
pour créer une coroutine La syntaxe est la suivante : 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
<coroutine body> représente le bloc de code à exécuter par la coroutine. 🎜🎜🎜Le cycle de vie de la coroutine🎜🎜🎜Le cycle de vie de la coroutine est principalement divisé en les étapes suivantes : 🎜<ul>
<li>🎜Création : 🎜La coroutine est créée via le <code>go
mot-clé.
chan ou <code>select
.
ou <code>select
.
close(chan)
est appelé. make(chan bool)
pour créer un canal sans tampon et attend que le canal soit fermé. Lorsque la goroutine termine son calcul, elle ferme le canal, informant ainsi la goroutine principale de la fin. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!