2016-04-25 16 views
-1

Ich muss eine feste Anzahl von Threads, z. B. 5, parallel ausführen und alle verbleibenden Threads in die Warteschlange aufnehmen. Hier ist ein Stück Code, den ich ausprobiert habe.So legen Sie die maximale Anzahl von Threads fest, die gleichzeitig mit ThreadPool in .NET ausgeführt werden

ThreadPool.SetMaxThreads(5, 0); 

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

Nun, wenn ich zu laufen bin versucht, sagen 7 Threads parallel dann wird es alle Threads gleichzeitig statt laufen 5 Themen und Warteschlangen nächsten 2 Threads ausgeführt wird. Wie erreiche ich das?

Antwort

0

Wenn Sie Parallel mit For/ForEach verwenden können, haben Sie ParallelOptions.MaxDegreeOfParallelism, wodurch die Anzahl gleichzeitiger Vorgänge begrenzt wird.

+0

können Sie einen Beispielcode in Bezug auf den ThreadPool-Code geben? – user3374764

+0

Sie brauchen den 'ThreadPool'-Code nicht mehr, mit' Parallel' können Sie einfach Sachen auf mehreren Threads verarbeiten, der Unterschied ist, dass 'ForEach' blockiert im Vergleich zu' QueueUserWorkItem', weshalb ich gefragt habe, ob Sie es verwenden können es. – Octav