Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务并行库和对象池设计模式_C#_.net_Task Parallel Library_Object Pooling - Fatal编程技术网

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

C# 任务并行库和对象池设计模式,c#,.net,task-parallel-library,object-pooling,C#,.net,Task Parallel Library,Object Pooling,我有一个场景,比如我正在使用任务并行库,我需要限制创建的对象(这里是任务)的数量。这意味着它将重用现有任务,我正在考虑使用对象池设计模式来实现此功能。但当我做一些研究时,我明白“不支持重新启动正在运行或已完成的任务”。所以我的问题是,我可以在这里使用对象池模式,即使它没有重用任务。因为无论如何,我限制了要创建的任务的数量。请给出一些建议。任务在表示可执行工作单元(同步或异步)的对象中。您似乎试图限制执行,而对象池用于限制创建的对象数量。重用任务没有实际意义(例如,与db连接不同) 要限制并发执行

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

任务
在表示可执行工作单元(同步或异步)的对象中。您似乎试图限制执行,而对象池用于限制创建的对象数量。重用任务没有实际意义(例如,与db连接不同)

要限制并发执行,可以与
Wait/WaitAsync
一起使用,也可以与
MaxDegreeOfParallelism
一起使用


要限制使用的线程数,您需要搜索
SemaphoreSlim
WaitAsync
,例如,或。同时搜索
TPL数据流
MaxDegreeOfParallelism
@nosratio和@I3arnon-->感谢您的回答:我的问题是我是否可以在这里使用对象池设计模式来实现限制对象使用。我听说在这种情况下会使用设计模式scenario@Dev不太可能,因为您不能重用任务。您可以拥有其他对象的对象池。真正的问题是你为什么要这么做。你想改进什么?我想在项目中应用一些设计模式,如果它真的符合场景的话。