Multiple Tasks Z
2024-10-17 22:11:37
public static async Task executeParallel<T>(this IEnumerable<T> items, int limit, Func<T, Task> actionMethod)
{
var allTasks = new List<Task>(); //Store all Tasks
var activeTasks = new List<Task>();
foreach (var item in items)
{
if (activeTasks.Count >= limit)
{
var completedTask = await Task.WhenAny(activeTasks);
activeTasks.Remove(completedTask);
}
var task = actionMethod(item);
allTasks.Add(task);
activeTasks.Add(task);
}
await Task.WhenAll(allTasks); // Wait for all task to complete
}
public async Task fun(int processId)
{
await Task.Run( () =>{
Random rand = new Random();
Console.WriteLine("Processing " + processId);
Thread.Sleep(rand.Next(1500));
Console.WriteLine("Done processing - " + processId);
});
} internal async void process(List<int> queue,int limit)
{
await queue.executeParallel(limit, fun);
} https://www.codeproject.com/Tips/1264928/Throttling-Multiple-Tasks-to-Process-Requests-in-C
最新文章
- php利用root权限执行shell脚本
- 一张图系列——为什么在DllMain里面创建了线程并Wait会卡死
- Leetcode: Word Squares &;&; Summary: Another Important Implementation of Trie(Retrieve all the words with a given Prefix)
- ie6对hover兼容性问题的解决:
- Windows 10 LTSB
- Roman to Integer
- javascript 继承、命名空间实现分享
- cancel-ng-swipe-right-on-child
- socket的accept函数解析
- 安卓.点击头像-->;编辑个人姓名-->;提交后.同时调用js关闭页面-->;返回上一层
- [Oracle Support]PeopleSoft Support中Fixes,Patches,Bundles,Packs?
- cglib代理
- 笔记:Maven 配置文件模板
- PCD文件格式详解及在PCL下读取PCD文件
- 我的代码-statistic analysis
- 学习用Node.js和Elasticsearch构建搜索引擎(2):一些检索命令
- (PMP)第9章-----项目资源管理
- 使用POI导出Excel文件
- Python2和Python3中print的不同点
- js发送get 、post请求的方法简介