Сначала отвечай сам и только потом проверяй ответ 👇
Стек: Go
Вопрос:
«Как работает sync.WaitGroup и зачем нужен метод Done()?»
Ответ:
sync.WaitGroup - это потокобезопасный счетчик, который нужен для того, чтобы дождаться завершения группы горутин.
Как он работает под капотом:
Add(n) - увеличивает внутренний счетчик на n (обычно вызывается перед запуском горутин). Done() - уменьшает счетчик на 1. Фактически, под капотом это просто синоним вызова Add(-1). Чаще всего его вызывают через defer внутри самой горутины, чтобы гарантировать уменьшение счетчика при любом исходе.Wait() — блокирует выполнение текущей горутины (например, main), пока счетчик не опустится до нуля.Как только все запущенные горутины отработают и вызовут
Done(), счетчик станет равен 0, блокировка снимется, и программа продолжит работу.Пиши свой вариант ответа в комментарии 👇