TPL中的最大任务?

时间:2011-01-19 20:43:46

标签: multithreading azure task-parallel-library plinq worker-process

我想在Windows Azure上的Worker进程中使用TPL。我想在队列中添加一个IJob,这有一个Run方法,所以worker将包含:

环     让项目脱离队列     使用TPL调用IJob.Run,​​这是一个异步调用

但我有点担心我可以添加到TPL的最大项目?如果需要,我很乐意建立自己的TPL池,只需检查它的功能。

干杯, 灰分。

1 个答案:

答案 0 :(得分:10)

TPL的主要目标之一是无需担心这一点。通过将您的工作分解为Tasks而不是Threads,您可以让调度程序更恰当地处理这种平衡。

您可以安排的“任务”数量没有固定的上限。它们(默认情况下,使用默认的TaskScheduler)使用ThreadPool进行调度,从.NET 4开始,它根据工作进行扩展。我强烈建议不要尝试构建自己的池 - 你不可能做得比默认更好。话虽如此,如果您的任务具有非标准的行为,您可能需要考虑编写自定义的TaskScheduler。

另外 - 要意识到理想情况下应该让你的任务尽可能“大”。与单个任务相关的开销 - 使它们太小(就工作而言)将导致开销对性能的影响大于具有适当数量的较大“任务”的影响。