我一直在网上搜索这个答案,但找不到任何对我来说真正有用的东西。

我有一个正在运行的程序,我想计算在给定时间我的方法中有多少线程。

我的 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/

10-11 07:12