
Concurrency-Patterns
Worker Pools, Pipelines, Fan-out/Fan-in, Cancellation, Context, errgroup, Semaphore
1Was ist ein Worker Pool in Go?
Was ist ein Worker Pool in Go?
Antwort
Ein Worker Pool ist ein Concurrency-Pattern, das eine feste Anzahl von Goroutines (Worker) verwendet, um Tasks aus einem gemeinsamen Channel zu verarbeiten. Dieses Pattern ermöglicht es, die Anzahl aktiver Goroutines zu begrenzen und den Verbrauch von Systemressourcen zu steuern. Anders als beim Erzeugen einer Goroutine pro Task verwendet der Worker Pool einen Satz von Workern wieder, um ein großes Volumen an Tasks effizient zu verarbeiten.
2Was ist der Hauptvorteil eines Worker Pools gegenüber dem Erzeugen einer Goroutine pro Task?
Was ist der Hauptvorteil eines Worker Pools gegenüber dem Erzeugen einer Goroutine pro Task?
Antwort
Das Begrenzen der Anzahl aktiver Goroutines ermöglicht es, den Verbrauch von Systemressourcen (Speicher und CPU) zu steuern und Überlastung zu vermeiden. Das Erzeugen einer Goroutine pro Task kann zu Tausenden oder Millionen gleichzeitiger Goroutines führen, die den Scheduler sättigen und den Speicher erschöpfen. Der Worker Pool hält eine optimale Anzahl von Workern, die Tasks sequenziell verarbeiten, und gewährleistet so vorhersehbare Performance auch unter hoher Last.
3Was ist eine Pipeline im Kontext der Concurrency in Go?
Was ist eine Pipeline im Kontext der Concurrency in Go?
Antwort
Eine Pipeline ist eine Reihe von Stages, die durch Channels verbunden sind, wobei jede Stage eine Gruppe von Goroutines ist, die dieselbe Funktion ausführen. Jede Stage empfängt Daten über Eingabe-Channels, führt eine Verarbeitung durch und sendet dann Ergebnisse über Ausgabe-Channels. Dieses Pattern ermöglicht es, komplexe Verarbeitung in einfache und wiederverwendbare Stages zu zerlegen und so die Komposition und das Testen jeder Komponente unabhängig zu erleichtern.
Wie schließt man einen Channel in einem Worker Pool korrekt, um das Ende der Verarbeitung zu signalisieren?
Was ist der Unterschied zwischen Fan-out und Fan-in?
+21 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
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