Go

Патерни конкурентності

Worker pools, pipelines, fan-out/fan-in, скасування, context, errgroup, семафори

24 питань зі співбесід·
Mid-Level
1

Що таке worker pool у Go?

Відповідь

Worker pool — це патерн конкурентності, що використовує фіксовану кількість goroutine (worker) для обробки задач зі спільного каналу. Цей патерн дозволяє обмежити кількість активних goroutine і контролювати споживання системних ресурсів. На відміну від створення однієї goroutine на задачу, worker pool повторно використовує набір worker для ефективної обробки великого обсягу задач.

2

Яка головна перевага використання worker pool замість створення однієї goroutine на задачу?

Відповідь

Обмеження кількості активних goroutine дозволяє контролювати споживання системних ресурсів (пам'яті та CPU) і уникати перевантаження. Створення однієї goroutine на задачу може призвести до тисяч або мільйонів одночасних goroutine, насичуючи scheduler і вичерпуючи пам'ять. Worker pool підтримує оптимальну кількість worker, які обробляють задачі послідовно, забезпечуючи передбачувану продуктивність навіть за високого навантаження.

3

Що таке pipeline у контексті конкурентності в Go?

Відповідь

Pipeline — це послідовність етапів (stage), з'єднаних каналами, де кожен етап є групою goroutine, що виконують одну й ту саму функцію. Кожен етап отримує дані через вхідні канали, виконує обробку, а потім надсилає результати через вихідні канали. Цей патерн дозволяє розкласти складну обробку на прості та повторно використовувані етапи, полегшуючи композицію та тестування кожного компонента незалежно.

4

Як правильно закрити канал у worker pool, щоб сигналізувати про завершення обробки?

5

Яка різниця між fan-out і fan-in?

+21 питань зі співбесід

Опануй Go для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно