En quoi consiste le mécanisme de multitâche utilisé dans les canaux pour l'échange de données entre threads ou processus?
sobes.tech IA
Réponse de l'IA
En Go, le mécanisme de multitâche basé sur les canaux repose sur le concept de CSP (Processus Séquentiels de Communication). Les canaux permettent aux goroutines (fils légers) d’échanger des données en toute sécurité, en synchronisant leur exécution sans blocages explicites.
Un canal agit comme une file d’attente, dans laquelle une goroutine peut envoyer des données, et une autre en recevoir. L’envoi et la réception bloquent la goroutine jusqu’à ce que l’autre partie soit prête pour l’opération, assurant ainsi la synchronisation et évitant les conditions de course.
Exemple:
ch := make(chan int)
// Envoi de données dans une goroutine
go func() {
ch <- 42 // se bloque jusqu’à ce que quelqu’un lise
}()
// Réception de données
val := <-ch // se bloque jusqu’à ce que les données apparaissent
fmt.Println(val) // 42
Ainsi, les canaux réalisent un mécanisme de multitâche coopératif, où les goroutines interagissent via l’échange de messages, et non via la mémoire partagée.