Go

Concurrency-patronen

Worker pools, pipelines, fan-out/fan-in, cancellation, context, errgroup, semaforen

24 gespreksvragen·
Mid-Level
1

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.

2

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.

3

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.

4

Hoe sluit je een kanaal in een worker pool correct af om het einde van de verwerking te signaleren?

5

Wat is het verschil tussen fan-out en fan-in?

+21 gespreksvragen

Beheers Go voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis