Sobes.tech
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.