Active Thread Number in Thread Pool

前端 未结 4 1224
执笔经年
执笔经年 2020-12-30 10:59

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

相关标签:
4条回答
  • 2020-12-30 11:38

    I set both to 10001, using ThreadPool.SetMaxThread. After that whenever, I run your program it shows max thread 10001, its persisted. I didn't restarted my core i 5 system.

    After that I set both it to 10000000 , and it is showing following thread max count

    worker:32767 ioCompletion:32767

    So on my Windows 7 Intel Core i5 , this is the maximum capacity.

    0 讨论(0)
  • 2020-12-30 11:42
    int available;
    int maxLimit;
    System.Threading.ThreadPool.GetAvailableThreads(out available, out maxLimit);
    
    0 讨论(0)
  • 2020-12-30 11:50

    Use ThreadPool.GetMaxThreads to get what you want.

    This article helps explain everything you need to know about ThreadPool.

    0 讨论(0)
  • 2020-12-30 11:55

    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.

    0 讨论(0)
提交回复
热议问题