Middle+
// Առաջադրանք: իրականացնել workerPool // numWorkers – աշխատողների թիվը // jobs – մշակման համար թվերի ցանկ // Ամեն աշխատող բարձրացնում է թվին քառակուսին // Վերադարձեք բոլոր արդյունքները (պատկերը կարևոր չէ) func workerPool(numWorkers int, jobs []int) []int { // ձեր կոդը այստեղ }
sobes.tech AI
Պատասխան 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
}