zoukankan      html  css  js  c++  java
  • Multiple Tasks Z

    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
  • 相关阅读:
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(中篇)
    2-4-2-6HTML文件标签
    2-4-1-4——2-4-1-5HTML快速入门
    2-4-1-1——2-4-1-3HTML介绍
    redis
    2-1-2-06 获取class对象的三种方式
    2-1-2-05反射概述
    Java面试题
    servlet和http请求协议
  • 原文地址:https://www.cnblogs.com/zeroone/p/9894127.html
Copyright © 2011-2022 走看看