我有一个调用C ++库的程序。程序进程有大量的线程(50-60)。它们中的大多数似乎都是用C ++创建的,我怀疑大多数都是暂停/等待的。
如何在给定时间点找到有多少这些线程处于活动状态?
答案 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,并且可以为您提供单独的堆栈跟踪,这将指示它们被阻止的内容。