ThreadPool.SetMaxThreads(Int32, Int32) 方法

定义

设置可以同时处于活动状态的线程池的请求数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。

public:
 static bool SetMaxThreads(int workerThreads, int completionPortThreads);
public static bool SetMaxThreads (int workerThreads, int completionPortThreads);
static member SetMaxThreads : int * int -> bool
Public Shared Function SetMaxThreads (workerThreads As Integer, completionPortThreads As Integer) As Boolean

参数

workerThreads
Int32

线程池中辅助线程的最大数目。

completionPortThreads
Int32

线程池中异步 I/O 线程的最大数目。

返回

如果更改成功,则为 true;否则为 false

注解

将 Windows 线程池配置为使用 而不是 .NET 线程池时,不支持此方法。 有关详细信息,请参阅 Windows 线程池配置设置

不能将最大工作线程数或 I/O 完成线程数设置为小于计算机上的处理器数。 若要确定存在的处理器数,请检索 属性的值 Environment.ProcessorCount 。 此外,不能将最大工作线程数或 I/O 完成线程数设置为小于相应最小工作线程数或 I/O 完成线程数的数字。 若要确定最小线程池大小,请调用 GetMinThreads 方法。

如果公共语言运行时由 Internet Information Services (IIS) 或 SQL Server 托管,则主机可以限制或阻止对线程池大小的更改。

更改线程池中的最大线程数时请谨慎。 虽然代码可能会受益,但更改可能会对你使用的代码库产生不利影响。

将线程池大小设置为太大可能会导致性能问题。 如果同时执行过多线程,则任务切换开销将成为一个重要因素。

注意

线程池可能具有最大线程计数 (上限,例如 short.MaxValue,具体取决于实现) 。 参数值上限为上限,因此即使方法返回 true,实际的最大线程计数也可能低于请求的线程数。

适用于

另请参阅