C# 获取活动线程计数和队列中的线程
这是我的应用程序的一个快速的伪代码 ImageDT是一个数据表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"]) } }
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。