Maison >développement back-end >Golang >Comment le planificateur Go gère-t-il la création de M et P en présence d'opérations bloquantes ?
Comprendre la création de M et P dans le planificateur Go
Le planificateur Go fonctionne sur un modèle impliquant des goroutines, des threads du système d'exploitation (M) et des contextes /processeurs (P). Pour optimiser les performances, le planificateur gère la création et l'utilisation de M et P de manière dynamique.
Création de M
M est créé lorsque le planificateur détecte un besoin d'exécuter un blocage tâches. Dans votre exemple de code, les goroutines effectuent des opérations de blocage de la base de données, ce qui déclenchera la création de M supplémentaires. Le nombre exact de M créés dépend du nombre de goroutines bloquées et des ressources système disponibles.
Création de P
P est créé lorsqu'une nouvelle goroutine est lancée. Cependant, le planificateur ne crée pas de nouveau P pour chaque goroutine. Au lieu de cela, il réutilise les instances P existantes, en conservant un nombre fixe de P égal à la valeur de GOMAXPROCS, généralement défini sur le nombre de processeurs disponibles.
Dans votre exemple de code
Dans votre code de test, vous créez 50 goroutines en deux lots. Étant donné que les opérations de la base de données sont bloquantes, M sera créé si nécessaire pour gérer les goroutines bloquantes. Cependant, comme les instances P sont réutilisées, seules 8 P seront créées, ce qui représente le nombre de cœurs virtuels sur votre système.
Plus de ressources
Pour une exploration plus approfondie de ce sujet sujet, reportez-vous à ces ressources :
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!