• Задача
  • Решение
  • Обсуждение

ProcessIndexed: порядок через индексы

Каждая задача несёт индекс, воркер пишет результат в свою ячейку. Реализуйте processIndexed: воркеры пишут results[j.idx] = j.val * 2.

GolangРешение
func processIndexed(jobs []job, workers int) []int {
	results := make([]int, len(jobs))
	ch := make(chan job)
	var wg sync.WaitGroup
	for i := 0; i < workers; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			for j := range ch {
				results[j.idx] = j.val * 2
			}
		}()
	}
	for _, j := range jobs {
		ch <- j
	}
	close(ch)
	wg.Wait()
	return results
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки