Работает отлично, большое спасибо
отрим эту функцию:
func doAllWork() error {
var wg sync.WaitGroup
wg.Add(3)
for i := 0; i < 2; i++ {
go func() {
defer wg.Done()
for j := 0; j < 10; j++ {
result, err := work(j)
if err != nil {
// can't use `return err` here
// what sould I put instead ?
os.Exit(0)
}
}
}()
}
wg.Wait()
return nil
}
В каждой горутине функцияwork()
называется 10 раз. Если один звонокwork()
возвращает ошибку в любой из запущенных программ, я хочу, чтобы все программы были немедленно остановлены, и программа была завершена. Это нормально использоватьos.Exit()
Вот ? Как мне справиться с этим?
редактировать: этот вопрос отличается откак остановить горутин как здесь мне нужно закрыть все goroutines, если ошибка происходит в одном