Sobes.tech
Senior

Was ist eine Goroutine? Wie ist sie aufgebaut?

sobes.tech KI

Antwort von AI

Eine Goroutine ist ein leichter Ausführungsthread in der Programmiersprache Go. Im Gegensatz zu System-Threads werden Goroutines vom Go-Laufzeitumfeld verwaltet und haben einen sehr kleinen Stack (beginnt bei wenigen Kilobyte und kann dynamisch wachsen). Dies ermöglicht die gleichzeitige Ausführung von Hunderttausenden von Goroutines mit geringen Overhead-Kosten.

Aufbau einer Goroutine:

  • Beim Erstellen einer Goroutine (mit dem Operator go) platziert der Scheduler von Go sie in die Warteschlange der bereit zur Ausführung stehenden Aufgaben.
  • Das Go-Laufzeitumfeld verwendet eine M:N-Planung: M System-Threads (OS-Threads) bedienen N Goroutines.
  • Goroutines wechseln den Kontext auf Runtime-Ebene, was schneller ist als der Wechsel zwischen System-Threads.
  • Jeder Thread (M) kann mehrere Goroutines (N) ausführen, indem er zwischen ihnen bei Blockierungen oder nach Bedarf wechselt.

Beispiel für die Erstellung einer Goroutine:

func sayHello() {
    fmt.Println("Hallo von der Goroutine")
}

func main() {
    go sayHello() // startet die Goroutine
    time.Sleep(time.Second) // wartet, damit die Goroutine ausgeführt werden kann
}