前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Parallel.For循环 和 Parallel.ForEach循环

Parallel.For循环 和 Parallel.ForEach循环

作者头像
全栈程序员站长
发布2022-09-09 11:29:12
2.2K0
发布2022-09-09 11:29:12
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

大多时候,我们的循环结构的每一次迭代 依赖于上一次迭代的计算或行为。

但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For 和 Parallel.ForEach结构就是这样做的。

一、Parallel.For

1、Parallel.For方法有12个重载:

public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action<int> body);

public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action<long> body);

public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action<int, ParallelLoopState> body);

public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action<long, ParallelLoopState> body);

public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action<int> body);

public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action<long> body);

public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action<int, ParallelLoopState> body);

public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action<long, ParallelLoopState> body);

public static ParallelLoopResult For<TLocal>(int fromInclusive, int toExclusive, Func<TLocal> localInit, Func<int, ParallelLoopState, TLocal, TLocal> body, Action<TLocal> localFinally);

public static ParallelLoopResult For<TLocal>(long fromInclusive, long toExclusive, Func<TLocal> localInit, Func<long, ParallelLoopState, TLocal, TLocal> body, Action<TLocal> localFinally);

public static ParallelLoopResult For<TLocal>(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Func<TLocal> localInit, Func<long, ParallelLoopState, TLocal, TLocal> body, Action<TLocal> localFinally);

public static ParallelLoopResult For<TLocal>(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Func<TLocal> localInit, Func<int, ParallelLoopState, TLocal, TLocal> body, Action<TLocal> localFinally);

最简单的一个是:public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action<int> body);

参数fromInclusive: 是迭代的第一个索引号整数;

参数toExclusive:是迭代的最后一个索引+1的整数;

参数body:是接受单个输入参数的委托,body的代码在每一次迭代中执行一次。

2、实例

using System; using System.Threading.Tasks; // Must use this namespace

//使用Parallel.For语句(并行循环语句)的前提条件:迭代之间彼此独立。 namespace ExampleParallelFor { class Program { static void Main() { //i是索引号,即为For语句中接受的单个参数 Parallel.For( 0, 15, i => Console.WriteLine( “The square of {0} is {1}”, i, i * i ) ); } } }

运行结果:

Parallel.For循环 和 Parallel.ForEach循环
Parallel.For循环 和 Parallel.ForEach循环

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161806.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档