Ich habe das Concurrency Visualizer-Tool in Visual Studio verwendet, um das Threading in einem WPF-Projekt zu verstehen, an dem ich gerade arbeite. Die Anwendung ist nicht stark multi-threaded, alle Multi-Threading ist nur um zu vermeiden, den UI-Thread zu blockieren. Als ich den Concurrency Visualizer lief, war ich sehr überrascht, ungefähr 50+ Threads zu sehen! Um die Dinge verwirrender zu machen, verbrachten fast alle dieser 50+ Threads ihre gesamte Zeit in "Synchronisation", die, soweit ich weiß, "blockiert" ist.Concurrency Visualizer - Grundlegendes WPF/CLR-Threading
Als ein Experiment erstellte ich ein neues leeres WPF-Anwendungsprojekt und führte es mit dem Concurrency Visualizer aus, wieder zu meiner Überraschung, eine Anwendung, von der ich erwartete, dass sie einen einzigen Hauptthread und vielleicht ein oder zwei weitere für die Garbage Collection hatte oder anderes CLR-Zeug, entpuppt sich als 10 Threads!
So sind meine Fragen:
- Warum gibt es so viele Threads in einer sehr einfachen Anwendung?
- Was sind im Allgemeinen die Funktionen dieser Gewinde?
- Warum verbringen sie fast ihre ganze Zeit "Synchronisation"?
- Empfehlungen für ein Buch/eine Website, die dieses Thema behandelt?