任务并行库和对象池设计模式

时间:2014-06-19 05:22:13

标签: c# .net task-parallel-library object-pooling

我有一个场景,比如我使用任务并行库,我需要限制创建的对象(此处为任务)的数量。这意味着它将重用现有任务,我正在考虑使用对象池设计模式来实现此功能。但是,当我做一些研究时,理解“不支持”重新启动正在运行或已完成的任务“。所以我的问题是我可以在这里使用对象池模式,即使它没有重用任务。因为无论如何我限制了要创建的任务的数量。请提出一些建议。

1 个答案:

答案 0 :(得分:1)

表示可执行工作单元(同步或异步)的对象中的

Task。您似乎正在尝试限制执行,而对象池则用于限制创建的对象数量。重用一个Task没有任何意义(例如,与数据库连接不同)。

要限制并发执行,您可以Wait/WaitAsync使用SemaphoreSlimMaxDegreeOfParallelism使用TPL Dataflow

要限制所需的线程数create a custom TaskScheduler