我一直在网上搜索这个答案,但找不到任何对我来说真正有用的东西。
我有一个正在运行的程序,我想计算在给定时间我的方法中有多少线程。
我的 Main() 函数中有代码:
Parallel.Invoke(MyMethod,MyMethod,MyMethod,MyMethod);
private static void MyMethod()
{
//how many threads are waiting here??? <--- this is what I am after
lock (myObj)
{
//one thread at a time please
}
}
任何人都可以在这里阐明?
最佳答案
无法直接查询给定函数中有多少线程。唯一的方法是进行手动跟踪
private static int s_threadCount;
private static void MyMethod() {
Interlocked.Increment(ref s_threadCount);
try {
...
} finally {
Interlocked.Decrement(ref s_threadCount);
}
}
注意:如果此方法可以递归进入,这将不会准确计算线程数,而是计算线程数 + 递归进入函数的次数。
关于c# - 我的方法中有多少线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8944191/