
Concurrency-patronen
Worker pools, pipelines, fan-out/fan-in, cancellation, context, errgroup, semaforen
1Wat is een worker pool in Go?
Wat is een worker pool in Go?
Antwoord
Een worker pool is een concurrency-patroon dat een vast aantal goroutines (workers) gebruikt om taken uit een gedeeld kanaal te verwerken. Dit patroon maakt het mogelijk het aantal actieve goroutines te beperken en het verbruik van systeembronnen te beheersen. In tegenstelling tot het aanmaken van één goroutine per taak hergebruikt de worker pool een set workers om een groot volume aan taken efficiënt te verwerken.
2Wat is het belangrijkste voordeel van een worker pool ten opzichte van één goroutine per taak?
Wat is het belangrijkste voordeel van een worker pool ten opzichte van één goroutine per taak?
Antwoord
Het beperken van het aantal actieve goroutines maakt het mogelijk het verbruik van systeembronnen (geheugen en CPU) te beheersen en overbelasting te voorkomen. Eén goroutine per taak aanmaken kan resulteren in duizenden of miljoenen gelijktijdige goroutines die de scheduler verzadigen en het geheugen uitputten. De worker pool houdt een optimaal aantal workers aan die taken sequentieel verwerken, wat voorspelbare prestaties garandeert, zelfs onder hoge belasting.
3Wat is een pipeline in de context van concurrency in Go?
Wat is een pipeline in de context van concurrency in Go?
Antwoord
Een pipeline is een reeks fasen (stages) die door kanalen zijn verbonden, waarbij elke fase een groep goroutines is die dezelfde functie uitvoeren. Elke fase ontvangt gegevens via invoerkanalen, voert verwerking uit en stuurt vervolgens resultaten via uitvoerkanalen. Dit patroon maakt het mogelijk complexe verwerking op te splitsen in eenvoudige en herbruikbare fasen, wat het samenstellen en testen van elke component afzonderlijk vergemakkelijkt.
Hoe sluit je een kanaal in een worker pool correct af om het einde van de verwerking te signaleren?
Wat is het verschil tussen fan-out en fan-in?
+21 gespreksvragen
Andere Go-sollicitatieonderwerpen
Go-basis
Go-datastructuren
Go-interfaces
Foutafhandeling
Goroutines-basis
Channels
Go Modules
HTTP-server
HTTP-client
JSON-codering
Database/SQL
context-pakket
Testing
Synchronisatieprimitieven
Go-webframeworks
REST API-ontwerp
gRPC
Reflection
Geheugenbeheer
Prestatie-optimalisatie
Generics
Go Design Patterns
Microservices
Beveiliging en authenticatie
Docker & Containerization
Kubernetes Basics
Geavanceerd Go
CLI-ontwikkeling
Beheers Go voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis