Używam narzędzia Wizualizator Concurrency Visualizer w Visual Studio, aby uzyskać zrozumienie wątków w projekcie WPF, nad którym pracuję. Aplikacja nie jest mocno wielowątkowa, wszystkie wielowątkowość ma na celu uniknięcie blokowania wątku interfejsu użytkownika. Kiedy uruchomiłem wizualizator Concurrency Visualizer byłem bardzo zaskoczony, widząc około 50+ wątków! Aby sprawić, by rzeczy bardziej zagmatwane, prawie wszystkie z tych ponad 50 wątków, spędzały cały czas w "Synchronizacji", która jest "zablokowana", o ile rozumiem.Wizualizator współbieżności - Opis gwintowania WPF/CLR
W ramach eksperymentu utworzyłem nowy, pusty projekt aplikacji WPF, i uruchomiłem go z Wizualizatorem Concurrency, jeszcze raz ku mojemu zdziwieniu, aplikacji, w której spodziewałem się mieć jeden główny wątek, a może jeszcze jeden lub dwa więcej do zbierania śmieci lub inne rzeczy CLR, okazuje się mieć 10 wątków!
Więc moje pytania to:
- Dlaczego istnieją tak wiele wątków w bardzo prosty aplikacji?
- Zasadniczo jakie są funkcje tych wątków?
- Dlaczego spędzają prawie cały swój czas "Synchronizacji"?
- Jakieś rekomendacje dotyczące książki/strony internetowej, która obejmuje ten temat?