
Goroutines-Grundlagen
Goroutines, go-Schlüsselwort, sync.WaitGroup, runtime.GOMAXPROCS, Goroutine-Leaks
1Was ist eine Goroutine in Go?
Was ist eine Goroutine in Go?
Antwort
Eine Goroutine ist eine Funktion, die nebenläufig zu anderen Funktionen ausgeführt wird und vom Go-Runtime statt vom OS verwaltet wird. Sie ist extrem leichtgewichtig (einige KB anfänglicher Stack) im Vergleich zu einem OS-Thread (mehrere MB). Der Go-Scheduler kann Tausende oder sogar Millionen von Goroutines auf eine begrenzte Anzahl von OS-Threads multiplexen, wodurch Nebenläufigkeit in Go sehr zugänglich wird.
2Wie startet man eine neue Goroutine in Go?
Wie startet man eine neue Goroutine in Go?
Antwort
Das Schlüsselwort go gefolgt von einem Funktionsaufruf startet eine neue Goroutine. Zum Beispiel 'go myFunction()' oder 'go func() { ... }()' für eine anonyme Funktion. Die Goroutine wird sofort parallel zum aufrufenden Code ausgeführt. Achtung: Die main-Funktion wartet nicht automatisch darauf, dass gestartete Goroutines beendet werden.
3Was ist der Hauptunterschied zwischen einer Goroutine und einem OS-Thread?
Was ist der Hauptunterschied zwischen einer Goroutine und einem OS-Thread?
Antwort
Eine Goroutine verbraucht etwa 2 KB anfänglichen Stack, während ein OS-Thread typischerweise 1-2 MB benötigt. Das Go-Runtime verwaltet das Scheduling der Goroutines im User Space (M:N-Scheduling) und multiplext Tausende von Goroutines auf wenige OS-Threads. Dies ermöglicht es, Millionen von Goroutines zu erstellen, ohne das System zu überlasten, im Gegensatz zu OS-Threads, die durch Ressourcen begrenzt sind.
Was passiert, wenn das Hauptprogramm endet, bevor eine Goroutine fertig ist?
Wie verwaltet das Go-Runtime die Ausführung von Goroutines?
+17 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
Concurrency-Patterns
Synchronisationsprimitive
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Docker & Containerization
Kubernetes Basics
Fortgeschrittenes Go
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten