zoukankan      html  css  js  c++  java
  • C#基础

    Parallel主要是并行编程,可以并行执行一段代码,要使用Paralle,需要先引入命名空间System.Threading.Tasks。

    1.Parallel.For

    Parallel.For()方法有点跟C#的for循环类似,只不过可以并行迭代,但是执行的顺序是没有保证的。

    public void TestParallel()
    {
        int sum = 0;
        Parallel.For(0, 10, (i) =>
        {
            sum += i;
        });
    }

    Parallel.For()有三个参数,第一个是执行开始的数,第二个是结束的数,第三个是一个委托。

    其中第三个委托可以接收两个参数,一个是当前执行的对象或参数,另外一个是ParallelLoopResult的对象。

    public void TestParallel()
    {
        int sum = 0;
        Parallel.For(0, 10, (i, loopState) =>
        {
            sum += i;
            var lop = loopState.LowestBreakIteration;
        });
    }

    Parallel.For()方法其实返回的是ParallelLoopResult对象,根据这个对象可以判断当前并行执行的线程是否已经结束,以及当前的最低迭代索引。

    public void TestParallel()
    {
        int sum = 0;
        ParallelLoopResult result = Parallel.For(0, 10, (i, loopState) =>
        {
            sum += i;
        });
    
        var isComplate = result.IsCompleted;
        var lop = result.LowestBreakIteration;
    }

    2.Parallel.Foreach

    Parallel.Foreach()方法跟C#的foreach方法类似,都是可以遍历一个集合。Parallel.Foreach()跟Parallel.For()一样,也是无法保证执行顺序的。看看如下代码:

    public void TestParallel()
    {
        var list = new List<string>();
        Parallel.ForEach(list, new ParallelOptions { MaxDegreeOfParallelism = 3 }, (name) =>
        {
    
        });
    }

    Parallel.Foreach可以接收三个参数,第一个是要遍历的集合,第二个是一个ParallelOptions的对象,有个属性MaxDegreeOfParallelism可以设置每次并行执行的个数,第三个参数是一个委托,接收一个参数,遍历的集合的元素。

    3.Parallel.Invoke

    Parallel.Invoke可以进行任务并行,接收多个委托参数,每个委托都可以不一样,并行执行,也就是可以接收多个不同的方法,同时执行。看看如下代码:

    public void TestParallel()
    {
        Parallel.Invoke(TestGross, TestStopwatch, TestAssembly);
        Parallel.Invoke(() =>
        {
    
        }, () =>
        {
    
        }, () =>
        {
    
        });
    }

    Parallel.For和Parallel.Foreach用来并行执行集合,Parallel.Invoke用来并行调用不同的任务。

  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业06
    C语言I博客作业01
    C语言I博客作业04
    C语言I博客作业05
    How kNN algorithm works(kNN算法原理讲解)
    《机器学习笔记》环境配置(Windows64位)
    git 命令使用
    关于推荐系统中的冷启动问题探讨(Approaching the Cold Start Problem in Recommender Systems)
    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
  • 原文地址:https://www.cnblogs.com/zfylzl/p/9970862.html
Copyright © 2011-2022 走看看