Junior — Middle
Pourriez-vous expliquer le concept de threads légers et leur différence avec les threads d'exécution classiques?
sobes.tech IA
Réponse de l'IA
Les threads légers (goroutines en Go) sont une abstraction pour l'exécution parallèle du code, qui est plus légère et plus efficace en ressources que les threads système classiques.
Différences :
- Ressources : les goroutines utilisent beaucoup moins de mémoire (généralement quelques kilo-octets), tandis qu'un thread système en nécessite beaucoup plus (généralement des mégaoctets).
- Planification : les goroutines sont planifiées par le planificateur de Go à l'intérieur du processus, et non par le système d'exploitation, ce qui permet un changement rapide entre elles.
- Création : lancer une goroutine est très rapide et peu coûteux, on peut en créer des milliers, voire des millions simultanément.
Exemple de création de goroutine :
func sayHello() {
fmt.Println("Bonjour depuis la goroutine")
}
func main() {
go sayHello() // lance la fonction dans une goroutine séparée
time.Sleep(time.Second) // attend pour que la goroutine ait le temps de s'exécuter
}
Ainsi, les threads légers permettent d'utiliser efficacement le parallélisme sans coûts supplémentaires importants.