Senior
Livecoding: on massiiv numbritest 1 kuni 10, mida tuleb ruutudeks tõsta, arvutusi paralleelselt teostades kolme tööjõu (worker) abil. Töötajate arv on määratletud konstantsena. Iga numbri puhul näidata töötaja ID, kes seda töötleb.
sobes.tech AI
Vastus AI-lt
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("Darbinieks %d apstrādāja skaitli %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
// Darbinieku uzsākšana
for i := 1; i <= workerCount; i++ {
wg.Add(1)
go worker(i, jobs, &wg)
}
// Nosūtām skaitļus apstrādei
for _, num := range numbers {
jobs <- num
}
close(jobs)
wg.Wait()
}