Heim >Backend-Entwicklung >Golang >Wie steuert die Golang-Funktion die Ausführung von Goroutine?

Wie steuert die Golang-Funktion die Ausführung von Goroutine?

PHPz
PHPzOriginal
2024-05-04 12:39:01946Durchsuche

Die Go-Funktion steuert die Goroutine-Ausführung auf folgende Weise: runtime.Goexit(): Beendet die aktuelle Goroutine zwangsweise. sync.WaitGroup: Warten Sie, bis eine Gruppe von Goroutinen abgeschlossen ist. select{}: Ermöglicht einer Goroutine, auf eines von mehreren Ereignissen zu warten und die entsprechende Aktion basierend auf dem ersten ausgelösten Ereignis auszuführen. context.Context: Kann verwendet werden, um Fristen einzuhalten oder Anfragen an Goroutinen zu stornieren.

Wie steuert die Golang-Funktion die Ausführung von Goroutine?

Wie Go-Funktionen die Ausführung von Goroutine steuern

Die Programmiersprache Go unterstützt Parallelität und verwendet Goroutine (leichte Threads), um Parallelität zu erreichen. Goroutinen können über Funktionen erstellt und jederzeit nach der Erstellung gestartet werden. In diesem Artikel werden die verschiedenen Funktionen zur Steuerung der Goroutine-Ausführung vorgestellt und einige praktische Beispiele bereitgestellt.

Funktion, die die Goroutine-Ausführung steuert

  • runtime.Goexit(): Beendet die aktuelle Goroutine zwangsweise.
  • sync.WaitGroup: Warten Sie, bis eine Gruppe von Goroutinen abgeschlossen ist.
  • select{}: Ermöglicht einer Goroutine, auf eines von mehreren Ereignissen zu warten und die entsprechende Aktion basierend auf dem ersten ausgelösten Ereignis auszuführen.
  • context.Context: kann verwendet werden, um Fristen oder Stornierungsanfragen an Goroutinen weiterzugeben.

Praktischer Fall

1. Beenden Sie Goroutine

rrree

2. Verwenden Sie sync.WaitGroup, um auf Goroutine zu warten

package main

import (
    "fmt"
    "runtime"
    "time"
)

func main() {
    go func() {
        for {
            fmt.Println("Goroutine is running...")
            time.Sleep(1 * time.Second)
        }
    }()

    // 等待 10 秒后终止 Goroutine
    time.Sleep(10 * time.Second)
    runtime.Goexit()
}

4 . Kontext verwenden. Goroutine abbrechen

package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    var wg sync.WaitGroup

    // 创建 5 个 Goroutine
    for i := 0; i < 5; i++ {
        wg.Add(1)
        go func(i int) {
            fmt.Printf("Goroutine %d is running...\n", i)
            time.Sleep(1 * time.Second)
            wg.Done()
        }(i)
    }

    // 等待所有 Goroutine 完成
    wg.Wait()
}

Das obige ist der detaillierte Inhalt vonWie steuert die Golang-Funktion die Ausführung von Goroutine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn