EN
C#/.NET - max and min number of threads in thread pool
5
points
To set up max and min number of threads in ThreadPool
class, ThreadPool.SetMinThreads
and ThreadPool.SetMaxThreads
methods could be useful.
1. Max and min number of threads example
using System;
using System.Threading;
namespace Test
{
public class Program
{
static void Main(string[] args)
{
int tasksCount = 5;
int iterationsCount = 5;
WaitCallback callback = (object state) =>
{
int taskId = (int)state;
for (int i = 0; i < iterationsCount; ++i)
{
int iterationId = i + 1;
Console.WriteLine("Task " + taskId + "/" + tasksCount
+ ": Iteration " + iterationId + "/" + iterationsCount);
}
};
ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(2, 2);
for (int i = 0; i < tasksCount; ++i)
{
int taskId = i + 1;
ThreadPool.QueueUserWorkItem(callback, taskId);
}
Thread.Sleep(1000);
}
}
}
Output:
Task 1/5: Iteration 1/5
Task 2/5: Iteration 1/5
Task 2/5: Iteration 2/5
Task 2/5: Iteration 3/5
Task 1/5: Iteration 2/5
Task 1/5: Iteration 3/5
Task 1/5: Iteration 4/5
Task 1/5: Iteration 5/5
Task 2/5: Iteration 4/5
Task 2/5: Iteration 5/5
Task 3/5: Iteration 1/5
Task 3/5: Iteration 2/5
Task 3/5: Iteration 3/5
Task 3/5: Iteration 4/5
Task 3/5: Iteration 5/5
Task 4/5: Iteration 1/5
Task 4/5: Iteration 2/5
Task 4/5: Iteration 3/5
Task 4/5: Iteration 4/5
Task 4/5: Iteration 5/5
Task 5/5: Iteration 1/5
Task 5/5: Iteration 2/5
Task 5/5: Iteration 3/5
Task 5/5: Iteration 4/5
Task 5/5: Iteration 5/5
Note: Notice that, only 2 tasks are executed in the same time.