Maison  >  Article  >  développement back-end  >  Pourquoi plusieurs threads sont-ils créés dans les applications Windows 10 C ?

Pourquoi plusieurs threads sont-ils créés dans les applications Windows 10 C ?

DDD
DDDoriginal
2024-10-27 00:46:30327parcourir

Why are Multiple Threads Created in Windows 10 C   Applications?

Création mystérieuse de threads sous Windows 10 dans les applications C

Dans cette enquête, une observation déroutante a été faite concernant la création inattendue de threads supplémentaires lors de l'exécution un simple programme C dans Windows 10. À l'aide de Visual Studio 2015, une nouvelle application console a été créée avec le code suivant :

<code class="cpp">int main() {
    return 0;
}</code>

Lors de la définition d'un point d'arrêt au niveau de l'instruction return et de l'exécution du programme dans le débogueur, le Le programme n'affichait qu'un seul thread sous Windows 7. Cependant, sous Windows 10, un nombre surprenant de cinq threads étaient présents : le thread principal et quatre "threads de travail" supplémentaires en attente sur un objet de synchronisation.

Dévoilement the Thread Origin

La question posée était : "Qui lance ces fils de discussion supplémentaires ?" Pour enquêter, il a été suggéré d'accéder à la fenêtre "Débogage > Windows > Threads" et d'activer Microsoft Symbol Server pour une meilleure visibilité. Cela a révélé que les threads supplémentaires ont été identifiés comme "ntdll.dll! TppWorkerThread."

Le rôle du chargement de la DLL

La définition d'un point d'arrêt au point d'entrée TppWorkerThread() a donné une trace de pile précieuse qui a fourni des informations sur l'origine de ces threads. Il a été découvert que le chargeur de Windows 10 utilisait le pool de threads pour charger les DLL. Ce comportement était absent dans Windows 7, indiquant un changement significatif dans le processus d'initialisation de Windows 10.

Initialisation simultanée pour un démarrage plus rapide

En exploitant plusieurs cœurs, Windows 10 accélère efficacement exécutez simultanément l'initialisation de l'application en exécutant simultanément le thread principal et les tâches de chargement de la DLL. Ce comportement améliore les performances globales d'initialisation et met en valeur les avantages des capacités avancées de gestion des ressources de Windows 10.

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