问题描述
在我的一个应用程序中,我必须使用多个线程.作为一个更好的方法,我用 ThreadPool
替换了一个线程队列.
In one of my applications, I have to use multiple threads.As a better approach, I have replaced a thread queue by ThreadPool
.
在 Form 开始时,我将最小/最大线程数设置如下:
At start of Form, I set Min/Max Threads as follows:
ThreadPool.SetMaxThreads(20,20)
ThreadPool.SetMinThreads(1,1)
后来在使用时,我使用ThreadPool
如下:
Later on while using, I use ThreadPool
as follow:
Function()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Action), arguments);
}
我没有使用任何类型的DeQueue
.
I am not using any sort of DeQueue
.
如果有人能分享他们在ThreadPool
(特别是Set MIN/MAX 接口)方面的经验会很有帮助
It will be help full if some one can share their experience with ThreadPool
(specially Set MIN/MAX interfaces)
问候,萨钦
推荐答案
一般情况下,不建议更改线程池大小.来自 MSDN:
Generally, it's not recommended to change the thread pool size. From MSDN:
更改线程中的最大线程数时要小心水池.虽然您的代码可能会受益,但更改可能会产生不利影响对您使用的代码库的影响.
如果公共语言运行时是托管的,例如通过 Internet信息服务 (IIS) 或 SQL Server,主机可以限制或防止更改线程池大小.
If the common language runtime is hosted, for example by InternetInformation Services (IIS) or SQL Server, the host can limit orprevent changes to the thread pool size.
CLR 或主机(例如 IIS)将根据您的应用程序的线程模式自行决定是增加还是减少线程池大小,因此如果我是您,我不会费心去玩这些数字.
The CLR or the host (e.g. IIS) on its own will determine whether to increase or decrease the thread pool size based on the threading patterns of your application so if I were you, I wouldn't bother playing with these numbers.
希望这会有所帮助.
这篇关于使用指南:C# 中的 ThreadPool.SetMaxThreads 和 ThreadPool.SetMinThreads的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!