Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取活动线程计数和队列中的线程_C#_Multithreading_Parallel Processing_Threadpool - Fatal编程技术网

C# 获取活动线程计数和队列中的线程

C# 获取活动线程计数和队列中的线程,c#,multithreading,parallel-processing,threadpool,C#,Multithreading,Parallel Processing,Threadpool,这是我的应用程序的一个快速的伪代码 ImageDT是一个数据表 Parallel.ForEach(ImageDT.AsEnumerable(), row => { if (a1 != a2) { ThreadPool.QueueUserWorkItem(Foo1, row["foo"]) } else { ThreadPool.QueueUserWorkItem(Foo2, row["foo"]) } }

这是我的应用程序的一个快速的伪代码 ImageDT是一个数据表

Parallel.ForEach(ImageDT.AsEnumerable(), row =>
{
    if (a1 != a2)
    {
        ThreadPool.QueueUserWorkItem(Foo1, row["foo"])
    }
    else 
    {
        ThreadPool.QueueUserWorkItem(Foo2, row["foo"])
    }
}
我需要知道有多少线程处于活动状态,有多少线程排队等待并行和线程池


感谢您

跟踪两个共享整数,“排队”和“活动”。在对工作项排队时,增量排队。当您的回调方法启动时,将其递减排队并递增活动。当回调退出时,减量激活。

GetAvailableThreads将帮助a1和a2代表什么?使用多线程代码创建线程通常不是一个好主意。您通常希望序列化代码生成新线程,或者使用多线程代码进行序列化。Servy您能举个例子,或者让我到一个网站用例子解释更多内容吗?此应用程序必须以cpu允许的速度运行。向其抛出大量数据。我目前使用的ImageDT包含193000多行,线程池线程正在搜索另一个数据表,该数据表使用了27000多行互锁。这一点很好,因为增量/减量不是原子的。我还建议将计数器声明为volatile。