J'ai utilisé l'outil Concurrency Visualizer dans Visual Studio pour comprendre le thread dans un projet WPF sur lequel je travaille. L'application n'est pas fortement multi-thread, tout le multi-thread est juste pour éviter de bloquer le thread UI. Quand j'ai couru le visualiseur concurrentiel, j'ai été très surpris de voir environ 50 fils et plus! Pour rendre les choses plus confuses, la quasi-totalité de ces 50+ threads, ont passé tout leur temps dans "Synchronisation", qui est "bloqué" autant que je comprends. En tant qu'expérience, j'ai créé un nouveau projet d'application WPF vierge, et l'ai exécuté avec le Visualiseur de Concurrency, à ma grande surprise, une application que je pensais avoir un seul thread principal, et peut-être un ou deux de plus pour le garbage collection ou d'autres choses CLR, se révèle avoir 10 fils!Concurrent Visualizer - Présentation du threading WPF/CLR
Mes questions sont les suivantes:
- Pourquoi y at-il tant de fils dans une application très simple?
- En général, quelles sont les fonctions de ces threads? Pourquoi passent-ils presque tout leur temps à se «synchroniser»?
- Des recommandations pour un livre/site Web traitant de ce sujet?