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
}