2016-04-25 87 views
-1

我需要并行执行固定数量的线程(例如5),并对所有剩余的线程进行排队。这是我试过的一段代码。如何使用.NET中的ThreadPool设置并发运行的最大线程数

ThreadPool.SetMaxThreads(5, 0); 

ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1); 
      Thread.Sleep(1000);//'ThreadProc' is the callback function 

现在,当我试图运行,说7个线程并行那么它运行的所有线程,而不是同时运行5线程和排队未来2个线程。我如何实现这一目标?

回答

0

如果您可以使用Parallel for For/ForEach,那么您有ParallelOptions.MaxDegreeOfParallelism,这将限制并发操作的数量。

+0

你可以给出关于ThreadPool代码的示例代码吗? – user3374764

+0

你不再需要'ThreadPool'代码了,'Parallel'可以在多线程上处理东西,区别在于'ForEach'与QueueUserWorkItem'相比是阻塞的,这就是为什么我问你是否可以使用它。 – Octav

相关问题