如何获取当前线程的ProcessThread.TotalProcessorTime

发布于 2024-10-14 04:32:27 字数 223 浏览 4 评论 0原文

好的,我正在使用 ThreadPool 来启动线程。在线程代码内部,我试图找出它实际使用的 cpu 时间。我读过有 ProcessThread 。 TotalProcessorTime 属性(http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.totalprocessortime.aspx),但我无法阅读它。那么如何获取当前线程的它呢?

ok, I am using ThreadPool to start threads. Inside threaad code I'm trying to figure out hom much cpu time it actually used. I've read there is ProcessThread . TotalProcessorTime property for this (http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.totalprocessortime.aspx) but I just can't get to read it. So how do I get it for a current thread?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲸落 2024-10-21 04:32:27

几点:

  1. 通过 ProcessThread.TotalProcessorTime 您需要知道本机线程 ID。

  2. 听起来很像您正在将托管线程 ID(通过 Thread.CurrentThread.Name)与本机线程 ID 进行比较,以通过 System.Diagnostics 获取当前线程 命名空间。请记住,托管线程 ID != ProcessThreadID。您需要使用 GetCurrentThreadId函数

  3. 线程池线程可以回收,因此线程池的TotalProcessorTime可能会比你期望的要大

  4. 如果您正在分析线程使用情况,那么使用 Visual Studio Ultimate 中的线程分析器或其他好的分析器可能会更容易(例如ANTS、DotTrace、SciTech 等)

A few points:

  1. To get the correct process thread via ProcessThread.TotalProcessorTime you'll need to know the native thread ID.

  2. It sounds very much like you are comparing the managed thread ID (via Thread.CurrentThread.Name) with the native thread ID to get the current thread within the via the System.Diagnostics namespace. Remember that managed thread ID != ProcessThreadID. You'll need to use the GetCurrentThreadId function

  3. Thread pool threads can be recycled, so the TotalProcessorTime for a thread pool may be larger than what you are expecting

  4. If you are profiling thread usage it may be easier to use the thread profiler in Visual Studio Ultimate, or another good profiler (e.g. ANTS, DotTrace, SciTech, etc.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文