Ho utilizzato lo strumento Concurrency Visualizer in Visual Studio per ottenere una comprensione del threading in un progetto WPF su cui sto lavorando. L'applicazione non è molto multi-thread, tutto il multi-threading serve solo a evitare il blocco del thread UI. Quando ho eseguito il Concurrency Visualizer sono rimasto molto sorpreso di vedere circa 50+ thread! Per rendere le cose più confuse, quasi tutte quelle discussioni di oltre 50 anni, hanno trascorso tutto il loro tempo in "Sincronizzazione", che è "bloccato" per quanto ho capito.Concurrency Visualizer - Informazioni sul threading WPF/CLR
Come esperimento ho creato un nuovo progetto di applicazione WPF vuoto e l'ho eseguito con Concurrency Visualizer, ancora una volta con mia sorpresa, un'applicazione che mi aspettavo di avere un singolo thread principale e forse uno o due in più per la garbage collection o altri contenuti CLR, risulta avere 10 thread!
Quindi le mie domande sono:
- Perché ci sono così tante discussioni in un'applicazione molto semplice?
- In generale quali sono le funzioni di questi thread?
- Perché stanno spendendo quasi tutto il loro tempo "Sincronizzazione"?
- Qualche raccomandazione per un libro/sito web che copre questo argomento?