我正在开发 ASP .NET Core 项目,其中我有管理用于执行任务的工作线程池的类,并且我正在使用 .NET 线程池来处理和执行用于处理传入 HTTP 请求的任务。
ThreadPool.SetMinThreads(workerThreads: 4, completionPortThreads: 4);
ThreadPool.SetMaxThreads(workerThreads: 70, completionPortThreads: 70);
ThreadPool.SetMinThreads
我的问题是:在ThreadPool.SetMaxThreads
ASP.NET Core 项目中可以设置的值是否有任何限制?
是的。根据第一种方法的文档:
根据第二种方法的文档:
SetMaxThreads状态的文档
...
因此,上限由实现定义,您应该能够调用 GetMaxThreads 来确认实际值。实际上,我预计您会在遇到任何操作系统造成的硬性限制之前遇到资源和性能限制。
当然,最小线程数必须为正数,且小于最大线程数:
还请注意以下评论:
因此,除非您需要解决特定且易于理解的问题,否则最好不要考虑线程数。建议在执行任何 IO 操作时使用任务和异步代码,而不是阻塞线程,因此您很少需要使用比 CPU 更多的线程。