62,046
社区成员
发帖
与我相关
我的任务
分享
var condition = Enumerable.Range(0, 5000).ToList();
假设每当接受一个输入编号,进行一项计算,这样模拟static Random rnd = new Random();
private static bool solve(int x)
{
return rnd.Next(2) + x == 0;
}
那么要并发执行这5000千个solve方法(输入的x各不相同),则应该这样写var result = (from x in condition.AsParallel() select solve(x)).ToList();
这就是并发执行这些任务。
对于你的程序来说,如果在一台机器上并发处理这5000条记录,那么就可以用 condition 来一次读取出来5000条数据,用solve 来处理记录(单个记录对应的实体对象代替这里的x变量),最后得到每条记录处理的结果集合,返回统计。
对于plinq 来说,它使用了.net的系统线程池,因此可以根据你的机器的使用情况来自动优化并发数量。所以不用担心、也不用手动规定什么并发数据量。当然如果你想限制最多用30个并发线程,也可以手动规定,例如var result = (from x in condition.AsParallel().WithDegreeOfParallelism(30) select solve(x)).ToList();
但是通常不必这样多此一举。