Junior — Middle
Quelle est la différence entre l'exécution du code dans une goroutine et le travail d'un thread système au niveau du système d'exploitation?
sobes.tech IA
Réponse de l'IA
Les goroutines en Go sont des threads légers gérés par le runtime de Go, et non par le système d'exploitation. Les principales différences :
- Légèreté : Les goroutines utilisent très peu de mémoire (généralement quelques kilo-octets de pile), alors que les threads système nécessitent beaucoup plus de ressources.
- Planification : Le planificateur de goroutines est intégré dans le runtime de Go et répartit les goroutines entre les threads système, permettant une utilisation efficace du CPU.
- Création et commutation : La création et la commutation entre goroutines sont plus rapides qu'entre threads système, car elles ne nécessitent pas de changement de contexte du noyau OS.
Exemple :
func main() {
go func() {
fmt.Println("Goroutine")
}()
fmt.Println("Thread principal")
time.Sleep(time.Second) // Attend la fin de la goroutine
}
Ici, la goroutine est lancée dans le processus, mais ne correspond pas directement à un thread système séparé.