我一直在使用 Visual Studio 中的并发可视化工具来了解我正在处理的 WPF 项目中的线程。该应用程序不是大量的多线程,所有多线程只是为了避免阻塞 UI 线程。当我运行并发可视化器时,我非常惊讶地看到大约 50 多个线程!为了让事情变得更加混乱,几乎所有这 50 多个线程都将全部时间都花在了“同步”上,据我所知,这是“阻塞”的。
作为一个实验,我创建了一个新的空白 WPF 应用程序项目,并使用并发可视化器运行它,再次令我惊讶的是,我期望有一个主线程的应用程序,可能还有一两个用于垃圾收集或其他 CLR 东西,原来有10个线程!
所以我的问题是:
- 为什么在一个非常简单的应用程序中有这么多线程?
- 一般来说,这些线程的作用是什么?
- 为什么他们几乎把所有的时间都花在“同步”上?
- 对涵盖该主题的书籍/网站有什么建议吗?