C#Task.WaitAll慢,任何替代方案

时间:2016-06-11 17:40:16

标签: c# .net multithreading task-parallel-library

我正在使用c#来处理数据库表上的一些计算,每个循环处理大约3000个员工数据。 每个员工大约需要2秒才能完成

意味着太多时间(2 * 3000 = 6000秒/循环) 所以我们决定使用.net线程,但我们仍然面临与Task.WaitAll相同的缓慢

任何想法,任何替代方案,如何同时完成所有?或比这更快的时间

这是我们的服务代码

我的算法是这样的

  1. 获取所有新员工的行动

  2. 并行循环每个员工(如果是1,则以2秒结束 雇员)

  3.   

    这里的问题对于许多员工来说,即使有任务也需要很长时间

    1. 再次获取新员工的行动

      /// seperate tasks
          List<Task> tasks = new List<Task>();
          foreach (Helper.Employeedata employee in employees)
          {
              Task t = Task.Factory.StartNew(() =>
              {
                  employee.loadActions();
              });
      
              tasks.Add(t);
          }
      
          Console.WriteLine("Waiting ...");
          Task.WaitAll(tasks.ToArray());
      

1 个答案:

答案 0 :(得分:0)

Parallel.ForEach(employees, employee => loadAction(employee));

如果&#34; loadActions&#34;是CPU密集型的,除了升级计算机或重写代码之外,你无能为力。