Middle — Middle+
Selgitage töövoogude basseinide kasutamise kontseptsiooni mitmetuumalises rakenduses.
sobes.tech AI
Vastus AI-lt
Tööjõu bassein on mehhanism, mis võimaldab piirata samaaegselt töötavate voogude (goroutines Go keeles) arvu ülesannete töötlemiseks. Selle asemel, et iga ülesande jaoks luua uus goroutine, asetatakse ülesanded järjekorda ning fikseeritud arv tööjõudu (goroutines) neid järjest töötleb. See aitab kontrollida ressursside kasutust, vältida liigset goroutine'ide loomist ning parandada jõudlust.
Go keeles saab tööjõu bassein olla rakendatud kasutades ülesannete kanalit ning fikseeritud arvu goroutine'idest tööjõud, kes loevad ülesandeid kanalilt ning täidavad neid:
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
// ülesande j töötlemine
results <- j * 2
}
}
func main() {
jobs := make(chan int, 100)
results := make(chan int, 100)
// Käivitame 3 tööjõudu
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
// Saadame 5 ülesannet
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
// Saadame tulemused
for a := 1; a <= 5; a++ {
fmt.Println(<-results)
}
}
See lähenemine võimaldab tõhusalt hallata paralleelsust ja ressursse rakenduses.