capypad
0 Tage Serie
go / beginner
Snippet

Einführung in Goroutines für Nebenläufigkeit

Goroutinen sind leichtgewichtige Threads, die von der Go-Laufzeit verwaltet werden und nebenläufige Ausführung ermöglichen. Stelle einfach das Präfix 'go' vor einen Funktionsaufruf, um ihn nebenläufig auszuführen. Im Gegensatz zur parallelen Verarbeitung (mit mehreren CPU-Kernen) ermöglicht die nebenläufige Verarbeitung durch Goroutines einem einzelnen CPU, mehrere Aufgaben zu bewältigen, indem zwischen ihnen gewechselt wird. Der Scheduler übernimmt das automatische Wechseln.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
 
import (
"fmt"
"time"
)
 
func main() {
fmt.Println("Start of program")
 
 
go say("Hello", 3)
go say("Go", 3)
 
 
time.Sleep(time.Second * 2)
fmt.Println("End of program")
}
 
 
func say(word string, count int) {
for i := 0; i < count; i++ {
fmt.Println(word)
time.Sleep(time.Millisecond * 100)
}
}
Erklärung
1
go say("Hello", 3)
Das Schlüsselwort 'go' startet die Funktion als Goroutine - läuft unabhängig und nebenläufig
2
time.Sleep(time.Second * 2)
Sleep pausiert die Ausführung für die angegebene Dauer und ermöglicht Goroutinen abzuschließen
3
go func() { }()
Anonyme Goroutine - nützlich für schnelle nebenläufige Operationen ohne Definitionsfunktion
4
fmt.Println(word)
Jede Goroutine druckt unabhängig, die Ausgabereihenfolge kann aufgrund der Planung variieren