Sobes.tech
Junior — Middle

Comment l'échange de signaux est-il effectué à l'aide de canaux dans le système de programmation?

sobes.tech IA

Réponse de l'IA

Dans le langage Go (Golang), les canaux sont utilisés pour échanger des signaux et des données entre goroutines, assurant ainsi la synchronisation et la communication.

Un canal est un conduit typé à travers lequel on peut envoyer et recevoir des valeurs. L’envoi et la réception sur un canal bloquent la goroutine jusqu’à ce que l’autre partie soit prête à accepter ou à envoyer des données, ce qui permet de synchroniser efficacement l’exécution.

Exemple d’échange de signaux avec un canal :

package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Println("Le travail a commencé")
    time.Sleep(time.Second) // simulation de travail
    fmt.Println("Le travail est terminé")
    done <- true // envoi du signal de fin
}

func main() {
    done := make(chan bool)
    go worker(done) // lancement de la goroutine
    <-done           // attente du signal de fin
    fmt.Println("La fonction principale est terminée")
}

Dans cet exemple, le canal done est utilisé pour transmettre le signal de fin de la goroutine worker. La fonction principale se bloque en lisant depuis le canal jusqu’à recevoir le signal, ce qui permet de synchroniser correctement l’exécution.