Sobes.tech
Junior — Middle

Comment le modèle de concurrence est-il implémenté dans le langage Golang?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, le modèle de concurrence est basé sur les goroutines et les canaux.

  • Goroutines sont des threads légers lancés avec le mot-clé go. Ils permettent d'exécuter des fonctions en parallèle sans coûts importants en ressources.

  • Canaux sont des canaux typés pour échanger des données entre goroutines, assurant synchronisation et échange sécurisé d'informations.

Exemple:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    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 effectuent leur travail en parallèle et envoient le résultat dans un canal, que le thread principal lit.

Ainsi, Go simplifie la programmation concurrente en cachant la complexité des threads et de la synchronisation.