Maison >développement back-end >Golang >Goroutines, threads utilisateur et threads du noyau : quelle est la différence ?

Goroutines, threads utilisateur et threads du noyau : quelle est la différence ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 09:35:11281parcourir

Goroutines, User Threads, and Kernel Threads: What's the Difference?

Différencier les goroutines, les threads utilisateur et les threads du noyau

Introduction

Les concepts des goroutines , les threads utilisateur et les threads du noyau peuvent prêter à confusion lors de l'exploration des subtilités de Go modèle de concurrence. Cet article vise à clarifier ces concepts et à répondre aux questions connexes.

Question 1 : Définition des threads et des goroutines du système d'exploitation

Question :

  • L'introduction "Effective Go" mentionne les goroutines. À quoi font référence les « threads du système d’exploitation » ? S'agit-il de threads utilisateur ou de noyau ?

Réponse :

  • Les « threads du système d'exploitation » font référence aux threads du noyau.

Question 2 : Comprendre P et G en déplacement Planificateur

Question :

  • Pourquoi le nombre de P (contextes processeur/planification) est-il égal au nombre de cœurs CPU ?
  • Si tous les processeurs desservent les programmes Go, qu'arrive-t-il aux autres programmes du système d'exploitation qui nécessitent un processeur ? allocation ?

Réponse :

  • P sert de couche de mappage entre les goroutines et les threads du noyau. Il y a un P par thread du noyau.
  • Les programmes Go peuvent allouer tous les cœurs de processeur disponibles par défaut (GOMAXPROCS), mais cela n'empêche pas l'exécution des autres processus du système d'exploitation. Même avec des opérations simultanées, les processus passent beaucoup de temps à attendre les opérations d'E/S, ce qui permet au planificateur du noyau d'allouer du temps CPU à d'autres programmes.

Question 3 : Nombre de threads du noyau générés

Question :

  • Combien de threads du noyau sont générés par le système d'exploitation ?

Réponse :

  • Le nombre de threads du noyau créés par le système d'exploitation est dynamique et dépend de la charge du système .

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn