线程池项之间的差异
本文关键字:之间 线程 | 更新日期: 2023-09-27 17:49:27
意思相同吗?
我应该如何使用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);
}
池使用多少线程很大程度上取决于它,并且可能根据else正在进行的操作、未启动项的数量等而变化;您只设置max。你不是泳池的唯一使用者;.net本身使用它,所以不要乱用它。如果您明确需要20个线程,则创建20个Thread
。
ThreadPool在。net 4中的实现是不同的(与。net相反)。
当你设置Max ThreadPool时,你说的是如果需要,你想要ThreadPool创建多少。如果队列任务是快速的,它可能能够处理它,即使有两个,而不创建20个线程。
你可以设置SetMinThreads,这将确保它首先创建最小数量的线程。但是要小心,因为创建线程是资源命中
参见MSDN文章