Parallel.For循环 和 Parallel.ForEach循环

Parallel.For循环 和 Parallel.ForEach循环大多时候,我们的循环结构的每一次迭代依赖于上一次迭代的计算或行为。但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代放在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For和Parallel.ForEach结构就是这样做的。一、Parallel.For1、Parallel.For方法有12个重载:publics…

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

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

但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代在不同的处理器上并行处理的话,将会受益匪浅。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循环

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java面试总是通不过_读完这篇文章你有什么感受

    java面试总是通不过_读完这篇文章你有什么感受Java面试题千千万,个人觉得没有最好的答案,只有最适合的答案;本文的宗旨是为读者朋友们整理一份详细而又权威的面试清单。此文是前段时间本人根据部分文章汇总压在草稿箱(由于时间关系,忘了加上对应的原创链接,如有侵权,请联系本人删除,本人单纯秉着知识乐于分享的精神),今天发现在草稿箱,特发出来给大家,仅供参考。注:本人才疏学浅,知识还在积累中,不能保证每个回答都满足各种等级的高手们,(由于一些技术的升级,部分答案不能保证实时同步准确,还请大家在阅读的时候多多留意)若发现有问题的话,请评论指出。…….

  • python进阶(3)json文件与python字典的转化[通俗易懂]

    python进阶(3)json文件与python字典的转化[通俗易懂]序列化与反序列化按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化;pytho

  • c++string截取字符串

    c++string截取字符串C++的string类提供了大量的字符串操作函数,提取字符串的一部分,可采用substr函数实现:头文件:#include<string>//注意没有.hstring.h是C的标准字符串函数数,c++中一般起名为ctring.而string头文件是C++的字符串头文件。函数原型:stringsubstr(intpos=0,intn)const;函数说明:参数1:pos是必填参数参数2:n是可参数,表示取多少个字符,不填表示截取到末尾该函数功能为:返回从

  • 关于DNS负载均衡技术

    关于DNS负载均衡技术在学习负载均衡技术的时候,我们肯定会学到dns负载均衡的相关内容,因为这个是负载均衡的一个代表应用。那么说到应用,到底是如何进行使用,改善网络问题的呢?那么本文就将为大家详细介绍一下其中的原理。为了建立一个高负载的Web站点,必须使用多服务器的分布式结构?上面提到的使用代理服务器和Web服务器相结合,或者两个Web服务器相互协作的方式也属于多服务器的结构,但在这些多服务器的结构中,每个服务器所

  • 单片机c语言程序设计试卷_stm32常见面试题

    单片机c语言程序设计试卷_stm32常见面试题c语言面试题集(单片机).c语言面试题集(单片机)1.预处理器(Preprocessor)1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60*24*365)UL:1).#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)2).懂得预处理器将为你计算常数表达式的值,因…

  • 计算机 修改 虚拟ip,电脑虚拟ip地址怎么弄?「建议收藏」

    计算机 修改 虚拟ip,电脑虚拟ip地址怎么弄?「建议收藏」原标题:电脑虚拟ip地址怎么弄?在需要建立局域网和连接多台计算机时。我将重新设置电脑的IP地址,这样电脑就可以连上网了。因此,如何设置电脑的IP地址呢?以下是根据电脑原来的IP地址设置IP地址的共享方法。设置步骤:1、首先,右击桌面上的网络邻居,并在打开的菜单中选择该属性。2、在打开的“网络连接”属性菜单中找到本地连接,单击“本地连接”,然后点击“查看此连接状态”,即可打开本地连接。单击“支持”标…

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号