我有一个场景,比如我使用任务并行库,我需要限制创建的对象(此处为任务)的数量。这意味着它将重用现有任务,我正在考虑使用对象池设计模式来实现此功能。但是,当我做一些研究时,理解“不支持”重新启动正在运行或已完成的任务“。所以我的问题是我可以在这里使用对象池模式,即使它没有重用任务。因为无论如何我限制了要创建的任务的数量。请提出一些建议。
答案 0 :(得分:1)
Task
。您似乎正在尝试限制执行,而对象池则用于限制创建的对象数量。重用一个Task没有任何意义(例如,与数据库连接不同)。
要限制并发执行,您可以Wait/WaitAsync
使用SemaphoreSlim
,MaxDegreeOfParallelism
使用TPL Dataflow
。
要限制所需的线程数create a custom TaskScheduler