• 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用来并行调用不同的任务。

  • 相关阅读:
    cs231n--详解卷积神经网络
    Spring 2017 Assignments2
    深度神经网络基础
    cs231n官方note笔记
    Spring 2017 Assignments1
    问题
    win7下解决vs2015新建项目,提示“未将对象引用设置到引用实例“的问题
    项目二:人脸识别
    ubutu强制关闭应用程序的方法
    将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)
  • 原文地址:https://www.cnblogs.com/zfylzl/p/9970862.html
Copyright © 2020-2023  润新知