Sobes.tech
Principal

Was sind Goroutines in Go? Worin besteht der Unterschied zwischen einer Goroutine und einem Betriebssystem-Thread?

sobes.tech KI

Antwort von AI

Goroutines in Go sind leichte Ausführungsthreads, die vom Go-Laufzeitumfeld verwaltet werden und die parallele Ausführung von Funktionen ermöglichen.

Unterschiede zwischen einer Goroutine und einem OS-Thread:

  • Leichtgewicht: Goroutines benötigen viel weniger Speicher (normalerweise einige Kilobyte), während OS-Threads deutlich größer sind.
  • Planung: Goroutines werden vom Go-Planer innerhalb des Prozesses geplant, nicht vom Betriebssystem, was einen schnelleren und effizienteren Kontextwechsel ermöglicht.
  • Skalierbarkeit: Es können Tausende oder sogar Millionen von Goroutines gleichzeitig gestartet werden, was mit OS-Threads aufgrund von Ressourcenbeschränkungen nicht möglich ist.

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
}