.Net并行编程之二:并行循环
2020-12-13 01:51
标签:style blog class code tar color 本篇内容主要包括: 1.能够转化为并行循环的条件 2.并行For循环的用法:Parallel.For 3.并行ForEach的用法Parallel.ForEach 4.并行LINQ(PLINQ)的用法AsParallel() 5.并行中断与并行停止的用法与区别 6.外部控制循环取消的方法(Break,Stop) 7.处理循环体中抛出的异常 8.小循环体的分区并行方法:Parallel.ForEach 9.最大并行度的控制,Parallel.For,Parallel.ForEach 10.在循环体中使用局部任务状态(个人理解就是循环体中包含几个阶段,但是这个阶段又要求能线程安全的调用这些方法) 11.尝试给并行循环定义自己的任务调度程序。 12.注意事项。 -------------------华丽的分割线----------------------------------------- 1.能够转化为并行循环的条件 .Net Framework 4.0,VisualStudio2010,XP sp3,Vista SP1,Win7,Win8,Win2008... 对集合中的元素的操作是相同的并且互不影响,不互相影响是指执行的先后顺序不影响最后结果。 生活中的场景举例: a:把银行的多个服务窗口看成是多个处理器核心,不同的客户取款操作是相互不影响的。当客户总量一定时,多个窗口同时开放要比只开放一个窗口效率要高很多。 b:考试之后,老师判卷子,参加判卷子的老师越多,处理完所有卷子时间越短 c:程序中处理/初始化一个高数量级的对象数组,对象之间相互独立 2.并行For循环的用法:Parallel.For 例子中的方法原型为:public static ParallelLoopResult For(int fromInclusive, int
toExclusive, Action 返回值为ParallelLoopResult,指示结果的状态,定义如下 Parallel.For 共有12种重载类型,上面是最简单的一种,其它类型的重载可以用来指定一些并行运行的配置,比如并行度,取消标记等。 3.并行ForEach的用法Parallel.ForEach 未完待续... .Net并行编程之二:并行循环,搜素材,soscw.com .Net并行编程之二:并行循环 标签:style blog class code tar color 原文地址:http://www.cnblogs.com/andyzeng/p/3712577.htmlpublic int NumberOfSteps = 10000000;
double[] result = new double[NumberOfSteps];
for (int i = 0; i )
{
result[i] = DoWork(i);
}
public int NumberOfSteps = 10000000;
double[] result = new double[NumberOfSteps];
Parallel.For(0, NumberOfSteps, (i) =>
{
result[i] = DoWork(i);
});
public struct ParallelLoopResult
{
public bool IsCompleted { get; }
public long? LowestBreakIteration { get; }
}
上一篇:JAVA之动态编译