Time.Sleep bloque-t-il les goroutines ?
L'utilisation de time.Sleep soulève la question de savoir s'il gêne les goroutines. La réponse est affirmative.
Cependant, la manière dont les goroutines sont planifiées dans les threads est sujette à modification à chaque version et peut varier en fonction de la plate-forme. Il adhère au « modèle MPG », qui fournit une compréhension conceptuelle mais ne constitue pas une description précise de l'algorithme de planification.
Lors de l'invocation de time.Sleep, le planificateur peut conclure que des threads supplémentaires sont inutiles alors que les goroutines sont simplement en attendant. En conséquence, il optimise l'utilisation des threads.
Distinction entre les exemples
Dans le premier exemple, en utilisant time.Sleep, le planificateur crée un nombre modeste de threads car le les goroutines sont en sommeil. En revanche, le deuxième exemple utilise des E/S disque, ce qui nécessite des threads supplémentaires pour gérer les écritures de fichiers simultanées.
Quand s'inquiéter
Bien qu'il soit théoriquement possible de créer un nombre excessif de threads du noyau par une manipulation délibérée du code, ce n'est pas une préoccupation courante pour les développeurs qui écrivent du code de production régulier. Cependant, si vous rencontrez un nombre de threads inhabituellement élevé, il est sage d'examiner votre code et de résoudre tout problème sous-jacent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!