Sobes.tech
Junior — Middle

Comment la transmission de données est-elle effectuée via un canal non tamponné?

sobes.tech IA

Réponse de l'IA

Dans Go, un canal non tamponné (canal sans tampon) assure une transmission synchrone des données entre goroutines. Cela signifie que l’envoi d’une valeur dans le canal est bloqué jusqu’à ce qu’une autre goroutine la reçoive, et vice versa : la réception est bloquée jusqu’à ce qu’une valeur soit disponible.

Ainsi, le transfert de données via un canal non tamponné se fait avec la synchronisation de l’expéditeur et du récepteur, garantissant un échange de données sans stockage intermédiaire.

Exemple :

ch := make(chan int) // canal non tamponné

go func() {
    ch <- 42 // l’envoi est bloqué jusqu’à ce que quelqu’un lise
}()

value := <-ch // la réception bloque l’exécution jusqu’à ce qu’une valeur apparaisse
fmt.Println(value) // affichera 42

Dans cet exemple, la goroutine envoie un nombre dans le canal et se bloque jusqu’à ce que la goroutine principale lise ce nombre.