Все квизы
Код-ревьюGoПродвинутый

Жизненный цикл горутин

Проведи ревью конкурентного кода Go: дождись зарегистрированного воркера, освободи mutex на каждой итерации, передай отмену вложенному вызову и закрой общий канал после всех отправителей.

Вопрос 1 из 4Один правильный ответ

Код-ревью

runWorker должна закрыть finished только после того, как воркер получил сигнал start и завершился. start изначально открыт, а значение приходит позже. На проверке finished закрывается раньше отправки в start. Что исправить?

func runWorker(start <-chan struct{}, finished chan<- struct{}) {
  var group sync.WaitGroup

  go func() {
    <-start
    group.Add(1)
    defer group.Done()
  }()

  group.Wait()
  close(finished)
}
Выбери один ответ