Sobes.tech
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

}