Sobes.tech
Senior

Livecoding: Es gibt ein Array von Zahlen von 1 bis 10, diese sollen quadriert werden, wobei die Berechnungen in drei Threads (Worker) parallelisiert werden. Die Anzahl der Worker wird in einer Konstanten festgelegt. Für jede Zahl soll die ID des Workers ausgegeben werden, der sie verarbeitet.

sobes.tech KI

Antwort von 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("Arbeiter %d hat die Nummer %d verarbeitet: %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

// Starten der Arbeiter
for i := 1; i <= workerCount; i++ {
	wg.Add(1)
	go worker(i, jobs, &wg)
}

// Senden der Zahlen zur Verarbeitung
for _, num := range numbers {
	jobs <- num
}
close(jobs)

wg.Wait()

}