何时使用System.Threading.ThreadPool,何时使用自定义线程池之一

本文关键字:何时使 线程 System Threading ThreadPool 自定义 | 更新日期: 2023-09-27 18:14:56

我正在为ASP创建一个异步处理程序。. NET将执行缓慢的存储过程。我想我理解,为了在慢速和快速页面的混合负载上获得额外的吞吐量,慢速页面需要在一个与ASP中使用的线程池分开的线程池中执行。. NET使用,否则异步模式将导致使用的稀缺线程数量翻倍(如果我错了请纠正我)。

所以我找到了System.Threading.ThreadPool -它看起来应该做的伎俩,但是…

网络上的各种教程,例如使用这个自定义池的教程,John Skeet的MiscUtils中的教程,以及本教程中关于异步模式引用的自定义线程池。

System.Threading.ThreadPool从1.1开始就存在了——为什么人们总是觉得有必要写一个全新的?我应该避免使用System.Threading.ThreadPool吗?

说到线程,我是一个初学者,所以对那些未定义的术语要小心。

。要执行的存储过程不一定是MS-SQL,也不一定能够使用内置的异步方法,如BeginExecuteNonQuery()

何时使用System.Threading.ThreadPool,何时使用自定义线程池之一

以下是我在这个话题上的发现。为什么你不应该在ASP中使用ThreadPool ?网http://madskristensen.net/post/Done28099t-use-the-ThreadPool-in-ASPNET.aspx。它很老了,但我不认为它有太大变化。或者纠正我,如果我错了。

使用System.Threading.ThreadPool或自定义委托并调用它的BeginInvoke提供了一种快速的方法来为你的应用程序启动工作线程。但不幸的是,它们会损害应用程序的整体性能,因为它们消耗ASP使用的同一线程池中的线程。. NET处理HTTP请求

在System.Threading.Thread类的帮助下使用自定义线程应该可以解决这个问题,因为创建的线程不是应用程序池的一部分