线程池和它提供的线程

时间:2013-11-25 13:05:06

标签: c# threadpool

我的代码是

static void Main(string[] args)
{
    for (int i = 0; i < 100; i++)
    { 
        ThreadPool.QueueUserWorkItem(y => 
        { 
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(3000);
        }); 
    }
    Console.Read();
}

当我启动程序并查看sos.dll时,我可以看到每次线程池为我提供4-5个线程。因此,因为池不提供更多线程,所以会发生延迟。 为什么会这样?

1 个答案:

答案 0 :(得分:3)

ThreadPool Class

  

每个进程有一个线程池。从.NET Framework 4开始,进程的线程池的默认大小取决于多个因素,例如虚拟地址空间的大小。进程可以调用GetMaxThreads方法来确定线程数。 可以使用SetMaxThreads方法更改线程池中的线程数。每个线程使用默认堆栈大小并以默认优先级运行。

另外请注意,根据系统资源(如CPU内核,RAM等),更多线程可能无法使您的应用程序运行得更快。