Senior
Livecoding: 1 dan 10 gacha sonlardan iborat massiv bor, ularni kvadratga ko'tarish kerak, hisoblashlarni uchta ishchi (worker) yordamida parallel tarzda bajarish. Workerlar soni konstantada belgilangan. Har bir raqam uchun, uni ishlovchi worker ID sini ko'rsat.
sobes.tech AI
AIdan javob
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("Ishchi %d raqamni ishladi: %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
// Ishchilarni ishga tushiramiz
for i := 1; i <= workerCount; i++ {
wg.Add(1)
go worker(i, jobs, &wg)
}
// Ishlash uchun raqamlarni yuboramiz
for _, num := range numbers {
jobs <- num
}
close(jobs)
wg.Wait()
}