Sobes.tech
Назад к вопросам
Middle+
4

// Задача: реализуй workerPool // numWorkers – количество воркеров // jobs – список чисел для обработки // Каждый воркер возводит число в квадрат // Верни все результаты (порядок не важен) func workerPool(numWorkers int, jobs []int) []int { // твой код здесь }

Компании, где спрашивали
WaterWal

Ответ от нейросети

sobes.tech AI

go func workerPool(numWorkers int, jobs []int) []int { type jobResult struct { result int }

jobsCh := make(chan int, len(jobs))
resultsCh := make(chan int, len(jobs))

// Запускаем воркеров
for i := 0; i < numWorkers; i++ {
    go func() {
        for job := range jobsCh {
            resultsCh <- job * job
        }
    }()
}

// Отправляем задания
for _, job := range jobs {
    jobsCh <- job
}
close(jobsCh)

// Собираем результаты
results := make([]int, 0, len(jobs))
for i := 0; i < len(jobs); i++ {
    results = append(results, <-resultsCh)
}

return results

}