Maison > développement back-end > Golang > le corps du texte

La création et le cycle de vie des coroutines Golang

PHPz
Libérer: 2024-04-15 17:06:02
original
725 Les gens l'ont consulté

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.

La création et le cycle de vie des coroutines Golang

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 <协程体>
Copier après la connexion

其中,<协程体> 表示协程要执行的代码块。

协程的生命周期

协程的生命周期主要分为以下几个阶段:

  • 创建:协程通过 go 关键字创建。
  • 执行:协程开始执行其代码块。
  • 挂起:协程通过调用 chan <-select 语句挂起。
  • 恢复:协程通过 <-chanselect 语句恢复。
  • 完成:协程执行完成,或者调用 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)
}
Copier après la connexion

在该示例中,我们创建一个 goroutine 来计算斐波那契数列。主协程使用 make(chan bool)rrreee

where, <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é.
  • 🎜Exécution : 🎜La coroutine commence à exécuter son bloc de code.
  • 🎜Suspendre : 🎜La coroutine est suspendue en appelant l'instruction chan ou <code>select.
  • 🎜Reprise : 🎜La coroutine est restaurée via l'instruction ou <code>select.
  • 🎜Complet : 🎜L'exécution de la coroutine est terminée ou close(chan) est appelé.
  • 🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un exemple d'utilisation de coroutine pour calculer la séquence de Fibonacci : 🎜rrreee🎜Dans cet exemple, nous créons une goroutine pour calculer la séquence de Fibonacci. La coroutine principale utilise 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!

    Étiquettes associées:
    source:php.cn
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal