Sobes.tech
Senior
30

Лайвкодинг: 1-ден 10-ға дейінгі сандар массиві бар, оларды квадраттау керек, есептеуді үш жұмысшыға параллелдеу. Жұмысшылар саны тұрақты болуы керек. Әр сан үшін оны өңдейтін жұмысшының ID-ін шығарыңыз.

Сұралған компаниялар
Магнум

AI-дан жауап

sobes.tech 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("Worker %d processed number %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()

}


В этом примере создаётся канал `jobs`, в который отправляются числа от 1 до 10. Три воркера параллельно читают из канала, возводят число в квадрат и выводят ID воркера и результат. Количество воркеров задаётся константой `workerCount`.