Go

Wzorce współbieżności

Worker pools, pipelines, fan-out/fan-in, anulowanie, context, errgroup, semafory

24 pytań z rozmów·
Mid-Level
1

Czym jest worker pool w Go?

Odpowiedź

Worker pool to wzorzec współbieżności, który wykorzystuje stałą liczbę goroutine (workerów) do przetwarzania zadań pochodzących ze wspólnego kanału. Wzorzec ten pozwala ograniczyć liczbę aktywnych goroutine i kontrolować zużycie zasobów systemowych. W przeciwieństwie do tworzenia jednej goroutine na zadanie, worker pool ponownie wykorzystuje zestaw workerów, aby wydajnie przetwarzać dużą liczbę zadań.

2

Jaka jest główna zaleta używania worker poola zamiast tworzenia jednej goroutine na zadanie?

Odpowiedź

Ograniczenie liczby aktywnych goroutine pozwala kontrolować zużycie zasobów systemowych (pamięci i CPU) oraz unikać przeciążenia. Tworzenie jednej goroutine na zadanie może prowadzić do tysięcy lub milionów współbieżnych goroutine, nasycając scheduler i wyczerpując pamięć. Worker pool utrzymuje optymalną liczbę workerów, które przetwarzają zadania sekwencyjnie, zapewniając przewidywalną wydajność nawet przy dużym obciążeniu.

3

Czym jest pipeline w kontekście współbieżności w Go?

Odpowiedź

Pipeline to seria etapów połączonych kanałami, gdzie każdy etap jest grupą goroutine wykonujących tę samą funkcję. Każdy etap odbiera dane przez kanały wejściowe, wykonuje przetwarzanie, a następnie wysyła wyniki przez kanały wyjściowe. Wzorzec ten pozwala rozłożyć złożone przetwarzanie na proste i wielokrotnego użytku etapy, ułatwiając komponowanie i testowanie każdego komponentu niezależnie.

4

Jak poprawnie zamknąć kanał w worker poolu, aby zasygnalizować koniec przetwarzania?

5

Jaka jest różnica między fan-out a fan-in?

+21 pytań z rozmów

Opanuj Go na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo