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.