gpt4 book ai didi

.net - Concurrency Visualizer - 了解 WPF/CLR 线程

转载 作者:行者123 更新时间:2023-12-04 16:11:18 26 4
gpt4 key购买 nike

我一直在使用 Visual Studio 中的 Concurrency Visualizer 工具来了解我正在处理的 WPF 项目中的线程。应用程序不是多线程的,所有的多线程只是为了避免阻塞 UI 线程。当我运行 Concurrency Visualizer 时,我非常惊讶地看到大约 50 多个线程!为了让事情变得更加困惑,几乎所有 50 多个线程都将整个时间都花在了“同步”上,据我所知,这是“阻塞”的。

作为一个实验,我创建了一个新的空白 WPF 应用程序项目,并使用 Concurrency Visualizer 运行它,再次令我惊讶的是,一个我希望有一个主线程的应用程序,可能还有一个或两个用于垃圾收集或其他 CLR 的东西,原来有10个线程!

Screenshot of Concurrency Visualizer showing 10 threads in a simple WPF Application

所以我的问题是:

  • 为什么在一个非常简单的应用程序中有这么多线程?
  • 一般来说,这些线程的功能是什么?
  • 为什么他们几乎所有的时间都花在“同步”上?
  • 对涵盖此主题的书籍/网站有什么建议吗?
  • 最佳答案

    Jerry Bullard 在这里对这个问题有一个很好的答案:19 Threads for WPF Application

    因此,除了 WPF UI 和渲染线程之外,还有不同类型的 .NET 线程:终结器、GC、调试器、计时器、线程池、主线程和后台线程。线程池至少有两个线程。这一切都为我们提供了至少 10 个线程(就像在您的屏幕截图中一样)。

    关于.net - Concurrency Visualizer - 了解 WPF/CLR 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027047/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com