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