如何获取活动线程数?

Day*_*One 7 c# multithreading

我有一个调用C++库的程序.程序进程有大量的线程(50-60).它们中的大多数似乎是用C++创建的,我怀疑大多数都是暂停/等待的.

如何在给定时间点找到有多少这些线程处于活动状态?

Nat*_*han 13

要实际确定活动线程的数量,有必要检查ThreadState每个线程的属性.

((IEnumerable)System.Diagnostics.Process.GetCurrentProcess().Threads)
    .OfType<System.Diagnostics.ProcessThread>()
    .Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running)
    .Count();
Run Code Online (Sandbox Code Playgroud)


Mar*_*tos 4

您可以使用 Process Explorer 来检查线程。它会实时告诉您每个进程消耗了多少 CPU,并且可以为您提供单独的堆栈跟踪,这将表明它们被阻止的内容。