我正在使用c#来处理数据库表上的一些计算,每个循环处理大约3000个员工数据。 每个员工大约需要2秒才能完成
意味着太多时间(2 * 3000 = 6000秒/循环) 所以我们决定使用.net线程,但我们仍然面临与Task.WaitAll相同的缓慢
任何想法,任何替代方案,如何同时完成所有?或比这更快的时间
这是我们的服务代码
我的算法是这样的
获取所有新员工的行动
并行循环每个员工(如果是1,则以2秒结束 雇员)
这里的问题对于许多员工来说,即使有任务也需要很长时间
再次获取新员工的行动
/// 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());
答案 0 :(得分:0)
Parallel.ForEach(employees, employee => loadAction(employee));
如果&#34; loadActions&#34;是CPU密集型的,除了升级计算机或重写代码之外,你无能为力。