我知道当我执行诸如 Parallel.For 和类似构造之类的事情时,TPL 对其任务使用了工作窃取队列。
如果我理解正确,该构造将启动许多任务,每个任务都将开始处理项目。如果其中一项任务完成了分配的项目,它将开始从尚未完成的其他任务中窃取项目。这解决了项目 1-100 处理成本低而项目 101-200 成本高的问题,并且这两个任务中的一个将闲置直到另一个完成。(我知道这是一个简化的解释。)
但是,这将如何在终端服务器或 Web 应用程序中扩展(假设我们在将在 Web 应用程序中运行的代码中使用 TPL)?我们是否可以仅仅因为我们的应用程序的 N 个实例并排运行而冒着使 CPU 饱和的风险?
我应该阅读有关此主题的任何信息吗?我还没有找到任何特别的东西,但这并不意味着没有。