线程池项之间的差异

本文关键字:之间 线程 | 更新日期: 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文章