Senior
Livecoding: არსებობს რიცხვების მასივი 1-დან 10-მდე, მათ უნდა დააყენოთ მეოთხედ, პარალელურად გამოთვლებს სამი მუშაკის (worker) დახმარებით. მუშაკების რაოდენობა განსაზღვრულია კონსტანტაში. თითოეულ რიცხვზე გამოიტანეთ ის worker-ის ID, რომელიც მას өңავს.
sobes.tech AI
პასუხი 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("მუშაკი %d დამუშავებული ნომერი %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
// მუშაკების დაწყება
for i := 1; i <= workerCount; i++ {
wg.Add(1)
go worker(i, jobs, &wg)
}
// ნომრების გადაცემა დამუშავებისთვის
for _, num := range numbers {
jobs <- num
}
close(jobs)
wg.Wait()
}