.net 4.0 任务并行库在终端服务器或web应用程序中如何扩展?

.net 4.0 任务并行库在终端服务器或web应用程序中如何扩展?,.net-4.0,task-parallel-library,multi-user,.net 4.0,Task Parallel Library,Multi User,我知道,当我执行类似Parallel.for和类似的构造时,TPL使用窃取工作队列来执行任务 如果我理解正确,该构造将启动许多任务,每个任务都将开始处理项目。如果其中一个任务完成了分配的项目,它将开始从其他尚未完成任务的任务中窃取项目。这解决了项目1-100处理成本较低,项目101-200成本较高的问题,并且两项任务中的一项将一直闲置,直到另一项任务完成。(我知道这是一个简化的解释。) 然而,这将如何在终端服务器或web应用程序中扩展(假设我们在web应用程序中运行的代码中使用TPL)?仅仅因为

我知道,当我执行类似Parallel.for和类似的构造时,TPL使用窃取工作队列来执行任务

如果我理解正确,该构造将启动许多任务,每个任务都将开始处理项目。如果其中一个任务完成了分配的项目,它将开始从其他尚未完成任务的任务中窃取项目。这解决了项目1-100处理成本较低,项目101-200成本较高的问题,并且两项任务中的一项将一直闲置,直到另一项任务完成。(我知道这是一个简化的解释。)

然而,这将如何在终端服务器或web应用程序中扩展(假设我们在web应用程序中运行的代码中使用TPL)?仅仅因为我们的应用程序有N个实例同时运行,我们就有可能让CPU充满任务吗


关于这个话题有什么我应该读的信息吗?我还没有找到任何特别的东西,但这并不意味着什么都没有。

您可以使用TPL来改进I/O绑定操作,方法是移动到异步模型。您还可以通过在低负载情况下更多地利用web服务器上可用的未使用处理器容量来改善请求延迟。您需要非常仔细地考虑这一点,因为在高负载下,处理器的利用率已经达到100%,增加更多的并行性将降低服务器的吞吐量

并行扩展团队博客对此进行了讨论:


我怀疑同样的观点也适用于终端服务器应用程序。

感谢您的链接,这类信息正是我想要的。