Sobes.tech
Junior — Middle

Expliquez le concept de division des tâches entre plusieurs threads ou processus pour optimiser le fonctionnement du système. Que signifie le terme Work-Sharing?

sobes.tech IA

Réponse de l'IA

Le partage de travail est une notion de répartition des tâches entre plusieurs threads ou processus pour améliorer l’efficacité et la performance du système. Au lieu qu’un seul thread exécute tout le travail de manière séquentielle, les tâches sont divisées en parties traitées en parallèle par différents exécutants.

En Go, cela se réalise à l’aide de goroutines et de canaux, où plusieurs goroutines peuvent traiter conjointement un ensemble de tâches, répartissant la charge et réduisant le temps d’exécution.

Exemple en Go :

package main

import (
    "fmt"
    "sync"
)

func worker(id int, jobs <-chan int, wg *sync.WaitGroup) {
    defer wg.Done()
    for j := range jobs {
        fmt.Printf("Travailleur %d traitant la tâche %d\n", id, j)
    }
}

func main() {
    jobs := make(chan int, 5)
    var wg sync.WaitGroup

    for w := 1; w <= 3; w++ {
        wg.Add(1)
        go worker(w, jobs, &wg)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    wg.Wait()
}

Ici, plusieurs travailleurs (threads) traitent conjointement une file de tâches, ce qui accélère l’exécution par rapport au traitement séquentiel.