Junior — Middle
Est-il possible de réaliser un traitement parallèle complet des tâches dans le langage Go?
sobes.tech IA
Réponse de l'IA
Oui, dans le langage Go, il est possible de réaliser un traitement parallèle complet des tâches. Go offre un support intégré pour la concurrence via les goroutines, qui sont des threads légers gérés par le runtime de Go.
Les goroutines permettent d'exécuter des fonctions en parallèle, et les canaux facilitent l'échange sécurisé de données entre elles.
Exemple de traitement parallèle :
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Travailleur %d traitant la tâche %d\n", id, j)
time.Sleep(time.Second) // simulation de travail
results <- j * 2
}
}
func main() {
jobs := make(chan int, 5)
results := make(chan int, 5)
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
for a := 1; a <= 5; a++ {
fmt.Println("Résultat :", <-results)
}
}
Ainsi, Go permet de réaliser efficacement un traitement parallèle avec un minimum d'efforts.