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

本文关键字:设计模式 对象 并行 任务 | 更新日期: 2023-09-27 18:09:30

我有一个场景,我正在使用任务并行库,我需要限制创建的对象(这里是任务)的数量。这意味着它将重用现有的任务,我正在考虑使用对象池设计模式来实现这个功能。但当我做了一些研究后,我明白了"不支持重新启动正在运行或已完成的任务"。所以我的问题是,我可以在这里使用对象池模式,即使它不是重用任务。因为我限制了要创建的任务的数量。

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

Task在表示可执行工作单元(同步或异步)的对象中。似乎你试图限制执行,而对象池是用来限制创建对象的数量。重用Task没有真正的意义(不像db连接)。

要限制并发执行,可以使用SemaphoreSlimWait/WaitAsync,或者使用TPL DataflowMaxDegreeOfParallelism

要限制使用的线程数,您需要创建一个自定义的TaskScheduler