Sobes.tech
Senior

Livecoding : il y a un tableau de nombres de 1 à 10, il faut les élever au carré, en parallélisant les calculs sur trois threads (workers). Le nombre de workers est défini dans une constante. Pour chaque nombre, afficher l'ID du worker qui le traite.

sobes.tech IA

Réponse de l'IA

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("Travailleur %d a traité le numéro %d : %d\n", id, num, result) } }

func main() { nombres := []int{1,2,3,4,5,6,7,8,9,10} jobs := make(chan int, len(nombres)) var wg sync.WaitGroup

// Lancer les travailleurs
for i := 1; i <= workerCount; i++ {
	wg.Add(1)
	go worker(i, jobs, &wg)
}

// Envoyer les nombres à traiter
for _, num := range nombres {
	jobs <- num
}
close(jobs)

wg.Wait()

}