ThreadPool.SetMaxThreads(Int32, Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
设置可以同时处于活动状态的线程池的请求数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。
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
,实际的最大线程计数也可能低于请求的最大线程数。