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,实际的最大线程计数可能低于请求。