他们的意思相同吗?
我应该如何使用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);
}
答案 0 :(得分:4)
池使用多少线程主要取决于它,并且可能因 else 正在进行的操作,未启动项目的数量等而有所不同;您只需设置 max 。您不是该池的唯一用户; .net自己使用它,所以不要乱用它。如果您明确需要20个线程,请创建20 Thread
s。
答案 1 :(得分:1)
ThreadPool在.NET 4中的实现方式不同(与.NET相反)。
当你设置Max ThreadPool时,你会说你需要多少个threadPool来创建如果需要。如果排队的任务很快,它甚至可以在不创建20个线程的情况下处理它。
您可以设置SetMinThreads,这将确保它首先创建最少数量的线程。但要小心,因为创建线程是资源命中