如何获取活动线程数?

时间:2010-04-30 11:56:48

标签: c# multithreading

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

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

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

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