我的代码是
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个线程。因此出现延迟,因为池没有提供更多的线程。为什么会发生这种情况?
发布于 2013-11-25 13:10:13
ThreadPool类
每个进程有一个线程池。从.NET框架4开始,进程线程池的默认大小取决于几个因素,例如虚拟地址空间的大小。进程可以调用GetMaxThreads方法来确定线程数。线程池中的线程数可以通过使用SetMaxThreads方法进行更改。每个线程使用默认堆栈大小,并按默认优先级运行。
另外,根据系统资源(如CPU内核、RAM等),更多的线程可能不会使应用程序运行得更快。
https://stackoverflow.com/questions/20193862
复制相似问题