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

}