2016-04-25 62 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

相關問題