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
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 mainimport ("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