Senior
Livecoding: yra masyvas skaičių nuo 1 iki 10, juos reikia pakelti kvadratu, paralelizuojant skaičiavimus per tris workerius. Workerų skaičius yra nustatytas kaip konstanta. Kiekvienam skaičiui parodyti workerio ID, kuris jį apdoroja.
sobes.tech AI
Atsakymas iš AI
go package main
import ( "fmt" "sync" )
const workerCount = 3
func worker(id int, jobs <-chan int, wg *sync.WaitGroup) { defer wg.Done() for num := range jobs { result := num * num fmt.Printf("Darbininkas %d apdorojęs numerį %d: %d\n", id, num, result) } }
func main() { numbers := []int{1,2,3,4,5,6,7,8,9,10} jobs := make(chan int, len(numbers)) var wg sync.WaitGroup
// Pradedame darbininkus
for i := 1; i <= workerCount; i++ {
wg.Add(1)
go worker(i, jobs, &wg)
}
// Siunčiame skaičius apdorojimui
for _, num := range numbers {
jobs <- num
}
close(jobs)
wg.Wait()
}