Sobes.tech
Junior — Middle

Quelles approches et outils en Go sont utilisés pour organiser des calculs parallèles et asynchrones avec des goroutines?

sobes.tech IA

Réponse de l'IA

En Go, pour organiser des calculs parallèles et asynchrones, on utilise des goroutines, qui sont des threads légers lancés avec le mot-clé go.

Principaux outils et approches :

  • Goroutines : permettent d'exécuter des fonctions en parallèle sans gestion explicite des threads du système d'exploitation.
  • Canaux (channels) : utilisés pour échanger des données en toute sécurité entre goroutines et pour la synchronisation.
  • select : opérateur pour attendre plusieurs opérations sur des canaux, permettant de traiter des données provenant de plusieurs sources.

Exemple :

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan<- string) {
    time.Sleep(time.Second) // simulation de travail
    ch <- fmt.Sprintf("Travailleur %d terminé", id)
}

func main() {
    ch := make(chan string)

    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }

    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

Dans cet exemple, trois goroutines s'exécutent en parallèle, et le canal est utilisé pour recevoir les résultats.

Ainsi, la combinaison de goroutines et de canaux est la principale méthode d'organisation des calculs parallèles et asynchrones en Go.