Sobes.tech
Junior — Middle

Comment la gestion parallèle et séquentielle des tâches est-elle implémentée dans le langage Go?

sobes.tech IA

Réponse de l'IA

En Go, le traitement parallèle des tâches est réalisé à l’aide de goroutines, qui sont des threads légers lancés avec le mot-clé go. Une goroutine peut être lancée pour exécuter une fonction de manière asynchrone, et elle s’exécutera en parallèle avec d’autres goroutines.

Le traitement séquentiel consiste simplement à appeler des fonctions sans utiliser go, où les tâches sont effectuées une après l’autre.

Exemple de traitement parallèle :

package main

import (
    "fmt"
    "time"
)

func tâche(id int) {
    fmt.Printf("Tâche %d démarrée\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Tâche %d terminée\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go tâche(i) // lance une goroutine
    }
    time.Sleep(2 * time.Second) // attend la fin des goroutines
}

Dans cet exemple, trois tâches sont lancées en parallèle. Si on supprime go, les tâches s’exécutent séquentiellement.

Pour la synchronisation et la gestion des goroutines, on utilise souvent des canaux (channels) et sync.WaitGroup.