C# 任务并行
、
List<int> ids = new List<int>(); for (int i = 0; i < 5000; i++) { ids.Add(i); } int maxDegreeOfParamllelism = 100;//最大并行数量 List<Task> tasks = new List<Task>(); //方法1 TaskFactory TaskFactory = new TaskFactory(); ids.ForEach(id => { tasks.Add( TaskFactory.StartNew(() => { //业务代码;----------------------------------------- //业务代码;----------------------------------------- }) ); //核心代码,保持当前线程总量为:maxDegreeOfParamllelism if (tasks.Count >= maxDegreeOfParamllelism) { Task.WaitAny(tasks.ToArray()); tasks = tasks.Where(t => t.Status == TaskStatus.Running).ToList(); } }); //方法2 ParallelOptions paralleloptions = new ParallelOptions(); paralleloptions.MaxDegreeOfParallelism = maxDegreeOfParamllelism;//设置最大并行度 Parallel.ForEach(ids, paralleloptions, id => { //业务代码;----------------------------------------- //业务代码;----------------------------------------- });
、