When I write the below code, why do I get avaliable Thread number like 1022, 1020. I have to get 25 thread max as I am using thread pool.
I guess the ouput thread n
I have to get 25 thread max as I am using thread pool.
The maximum number of threads in the thread-pool per core has changed a lot over time. It's no longer 25 per core, which I suspect is what you were expecting.
For example, running this on my quad-core hyperthreaded laptop with .NET 4, I get a maximum of 32767 worker threads and 1000 IO completion port threads:
using System;
using System.Threading;
class Test
{
static void Main()
{
int worker;
int ioCompletion;
ThreadPool.GetMaxThreads(out worker, out ioCompletion);
Console.WriteLine("{0} / {1}", worker, ioCompletion);
}
}
Under .NET 3.5 I get 2000 worker threads and still 1000 IO completion port threads.
That isn't the number of threads actually in the thread pool though - it's the maximum number that the thread pool allows itself to create over time.