En d'autres termes, quels sont les avantages du filetage hybride par rapport au filetage 1: 1 (noyau uniquement) et N: 1 (utilisateur uniquement)?
Ceci fait suite à Quelle est la différence entre les threads au niveau utilisateur et les threads au niveau du noyau?
Réponses:
Je pense que le thread hybride est très similaire à un pool de threads .
Dans la piscine de fil, vous utilisez threads pour exécuter de « tâches », où peut être beaucoup plus élevé que . L'avantage par rapport à l'utilisation d'un thread pour chaque tâche (threading du noyau uniquement) est que vous consommez moins de ressources, comme la mémoire (virtuelle et physique) et les objets du noyau (au moins dans le cas spécifique des threads Windows, mais j'imagine que d'autres systèmes d'exploitation sont similaires à cet égard). Vous obtenez également moins de changements de contexte, ce qui augmente les performances (dans le cas idéal, où vous avez autant de threads en cours d'exécution que de processeurs, vous pouvez n'avoir presque aucun changement de contexte).M M NN M M N
L'avantage par rapport au threading uniquement par l'utilisateur est que vous pouvez profiter de plusieurs processeurs ou de plusieurs cœurs de processeur. Et si une tâche se bloque, vous pouvez créer un autre thread du noyau pour utiliser plus efficacement le processeur disponible.
Ainsi, vous bénéficiez des avantages des deux approches, au détriment d'une planification supplémentaire en mode utilisateur.
Un inconvénient par rapport à la planification uniquement du noyau est peut-être une latence plus importante: si tous les threads du pool sont occupés et que vous ajoutez une nouvelle tâche courte, vous pouvez attendre longtemps avant qu'elle ne commence à s'exécuter.
la source