繁体   English   中英

线程池及其提供的线程

[英]Thread Pool and it thread provide

我的代码是

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个线程。 由于池未分配更多线程,因此会发生延迟。 为什么会这样呢?

ThreadPool类

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

另外要注意的是,取决于系统资源(如CPU内核,RAM等),更多线程可能不会使您的应用程序运行得更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM