ThreadPool项目之间的区别?

时间:2011-04-07 14:08:56

标签: c# threadpool

他们的意思相同吗?

我应该如何使用ThreadPool.SetMaxThreads(20, 20);,因为我看不到20个线程异步工作?

ThreadPool.SetMaxThreads(20, 20);
    ThreadPool.QueueUserWorkItem(new WaitCallback(WorkThread), DateTime.Now);

for (int i = 0; i < 20; i++)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(WorkThread), DateTime.Now);
        }

2 个答案:

答案 0 :(得分:4)

池使用多少线程主要取决于它,并且可能因 else 正在进行的操作,未启动项目的数量等而有所不同;您只需设置 max 。您不是该池的唯一用户; .net自己使用它,所以不要乱用它。如果您明确需要20个线程,请创建20 Thread s。

答案 1 :(得分:1)

ThreadPool在.NET 4中的实现方式不同(与.NET相反)。

当你设置Max ThreadPool时,你会说你需要多少个threadPool来创建如果需要。如果排队的任务很快,它甚至可以在不创建20个线程的情况下处理它。

您可以设置SetMinThreads,这将确保它首先创建最少数量的线程。但要小心,因为创建线程是资源命中

see MSDN article