Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que sont les canaux synchrones et comment ils fonctionnent en programmation?

sobes.tech IA

Réponse de l'IA

Les canaux synchrones en programmation, en particulier en Go, sont des canaux qui bloquent l'expéditeur jusqu'à ce que le récepteur lise les données, et vice versa. Autrement dit, le transfert de données ne se produit que lorsque les deux parties sont prêtes.

En Go, un canal sans tampon est synchrone. Exemple:

ch := make(chan int) // canal synchrone

// Envoi
go func() {
    ch <- 42 // se bloque jusqu'à ce que quelqu'un lise
}()

// Réception
val := <-ch // se bloque jusqu'à ce que quelqu'un envoie
fmt.Println(val)

Ici, l'envoi dans le canal ch attendra qu'une autre goroutine lise la valeur, et vice versa. Cela permet de synchroniser l'exécution des goroutines et d'échanger des données sans utiliser de mécanismes de synchronisation supplémentaires.