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

问题描述 投票:0回答:1

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

c# .net threadpool
1个回答
3
投票

几点:

  1. 要通过

    ProcessThread.TotalProcessorTime
    获取正确的进程线程,您需要知道本机线程 ID。

  2. 听起来很像您正在将托管线程 ID(通过

    Thread.CurrentThread.Name
    )与本机线程 ID 进行比较,以通过
    System.Diagnostics
    命名空间获取当前线程。请记住,托管线程 ID != ProcessThreadID。您需要使用
    GetCurrentThreadId
    功能

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

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

© www.soinside.com 2019 - 2024. All rights reserved.