如何使用.NET中的ThreadPool设置并发运行的最大线程数
问题描述:
我需要并行执行固定数量的线程(例如5),并对所有剩余的线程进行排队。这是我试过的一段代码。如何使用.NET中的ThreadPool设置并发运行的最大线程数
ThreadPool.SetMaxThreads(5, 0);
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1);
Thread.Sleep(1000);//'ThreadProc' is the callback function
现在,当我试图运行,说7个线程并行那么它运行的所有线程,而不是同时运行5线程和排队未来2个线程。我如何实现这一目标?
答
如果您可以使用Parallel for For/ForEach,那么您有ParallelOptions.MaxDegreeOfParallelism
,这将限制并发操作的数量。
你可以给出关于ThreadPool代码的示例代码吗? – user3374764
你不再需要'ThreadPool'代码了,'Parallel'可以在多线程上处理东西,区别在于'ForEach'与QueueUserWorkItem'相比是阻塞的,这就是为什么我问你是否可以使用它。 – Octav