Sobes.tech
Junior — Middle

Explique ce que sont les appels non bloquants dans le contexte du travail avec des goroutines et comment ils sont implémentés.

sobes.tech IA

Réponse de l'IA

Les appels non bloquants dans le contexte des goroutines sont des opérations qui n'obligent pas la goroutine en cours à attendre la fin d'une opération, lui permettant de continuer son exécution. En Go, cela est souvent lié à l'utilisation de canaux et de la construction select avec default, pour tenter d'envoyer ou de recevoir des données du canal sans bloquer si l'opération est impossible.

Exemple d'envoi non bloquant dans un canal :

ch := make(chan int)

select {
case ch <- 1: // si le canal est prêt à recevoir une valeur
    fmt.Println("Envoyé")
default: // si l'envoi n'est pas possible — on ne bloque pas
    fmt.Println("Canal occupé, on ne bloque pas")
}

Ainsi, la goroutine ne se bloque pas si l'opération avec le canal est impossible, mais continue son travail. Cela permet de gérer efficacement la concurrence sans attendre.