Junior — Middle
Peut-on transférer une tâche d'une goroutine à une autre qui est en état d'attente ?
sobes.tech IA
Réponse de l'IA
En Go, il n'est pas possible de transmettre directement une tâche d'une goroutine à une autre en attente, car les goroutines ne disposent pas d'un mécanisme intégré pour transférer des tâches entre elles.
Cependant, pour organiser le transfert de tâches entre goroutines, on utilise généralement des canaux (channels). Une goroutine peut envoyer des tâches dans un canal, et une autre peut les recevoir et les exécuter. Si la goroutine qui reçoit les tâches est en attente, elle attendra des données du canal et les traitera immédiatement à leur arrivée.
Exemple :
tasks := make(chan func())
// Goroutine exécutante
go func() {
for task := range tasks {
task() // exécuter la tâche
}
}()
// Goroutine émettrice
tasks <- func() {
fmt.Println("Tâche terminée")
}
Ainsi, la tâche est transmise via le canal, et la goroutine en attente la reçoit et l'exécute.