Sobes.tech
Junior — Middle

Comment fonctionne le mécanisme d'enregistrement dans un canal à accès limité et que se passe-t-il lors de ce processus?

sobes.tech IA

Réponse de l'IA

Dans Go, un canal à capacité limitée (canal tamponné) a une taille de tampon fixe. Lorsqu'on écrit des données dans le canal avec l'opération chan <- value, voici ce qui se passe :

  • Si de la place est disponible dans le tampon du canal, la valeur est placée dans le tampon, et l'opération d'écriture se termine immédiatement.
  • Si le tampon est plein, l'opération d'écriture se bloque jusqu'à ce qu'une lecture du canal libère de l'espace.

Ainsi, un canal tamponné avec capacité limitée assure une synchronisation entre goroutines : l'écriture se bloque en cas de débordement, et la lecture en cas de tampon vide.

Exemple :

ch := make(chan int, 2) // tampon de 2 éléments

ch <- 1 // écriture, tampon : [1]
ch <- 2 // écriture, tampon : [1, 2]
// ch <- 3 // se bloque, car le tampon est plein

fmt.Println(<-ch) // lit 1, tampon : [2]
ch <- 3 // écriture réussira maintenant

Ainsi, le mécanisme d'écriture dans un canal à capacité limitée garantit le contrôle des flux de données et empêche le débordement du tampon.