Sobes.tech
Junior — Middle

Est-il possible d'effectuer une écriture simultanée de données dans le canal sans utiliser de tampon?

sobes.tech IA

Réponse de l'IA

En Go, les canaux peuvent être tamponnés ou non tamponnés. Dans un canal non tamponné, l’écriture (envoi) se bloque jusqu’à ce qu’un autre goroutine lise la valeur du canal.

Il n’est pas possible d’écrire simultanément dans un canal non tamponné, car l’envoi se bloque jusqu’à la réception, et un seul émetteur peut transmettre des données à un moment donné.

Si vous souhaitez effectuer une écriture simultanée sans blocage, utilisez des canaux tamponnés, où l’expéditeur peut mettre des données dans le tampon sans attendre une réception immédiate.

Exemple de canal non tamponné :

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

// L’envoi se bloque jusqu’à ce que quelqu’un lise
ch <- 1

Pour une écriture simultanée sans blocage, un tampon est nécessaire :

ch := make(chan int, 2) // tampon de 2 éléments
ch <- 1 // ne se bloque pas
ch <- 2 // ne se bloque pas

En résumé : sans tampon, l’écriture simultanée n’est pas possible.