Урок 85 · Задача 1

ProcessAll: Add до go

Исправьте гонку: Add должен стоять до запуска горутины. Реализуйте processAll(files []int) int: суммируйте значения в горутинах, где wg.Add(1) перед go, а внутри — только defer wg.Done().

00:00:00
Показать решение
GolangРешение
func processAll(files []int) int {
	var wg sync.WaitGroup
	var sum int64
	for _, f := range files {
		wg.Add(1)
		go func(f int) {
			defer wg.Done()
			atomic.AddInt64(&sum, int64(f))
		}(f)
	}
	wg.Wait()
	return int(atomic.LoadInt64(&sum))
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки