Parallel类

1,用Parallel.For()方法循环

    class Program
    {
        static void Main(string[] args)
        {
            //=============================第一种
            Parallel.For(0,//第一个参数:开始索引
                10,//第二个参数:最大索引
                (i, parallelLoopState) =>//第三个参数:循环委托方法
                {
                    Console.WriteLine("索引:{0},任务id:{1},线程id:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                });

            //=============================第二种
            Parallel.For<string>(0,//第一个参数:开始索引
                10,//第二个参数:最大索引
                //第三个参数:线程开始的方法
                () => { Console.WriteLine("线程开启:{0}", Thread.CurrentThread.ManagedThreadId); return "aa"; },
                //第四个参数:循环委托方法
                (i, pls, str1) => { Console.WriteLine("索引:{0},线程id:{1},任务id:{2}", i, Thread.CurrentThread.ManagedThreadId,Task.CurrentId); return "bb"; },
                //第五个参数:线程结束的方法
                str => Console.WriteLine("线程结束:{0}", Thread.CurrentThread.ManagedThreadId));
            Console.ReadLine();
        }
    }

2,用Parallel.ForEach()方法循环

    class Program
    {
        static void Main(string[] args)
        {
            string[] data = new string[] { "1", "2", "3", "4" };
            Parallel.ForEach(data, r => {
                Console.WriteLine(r);
            });

            Parallel.ForEach<string>(data, (r, p, l) =>
            {
                //r:遍历数组的值
                //l:数组的索引
                Console.WriteLine(r + "," + l);
            });
 
            Console.ReadKey();
        }
    }

3,用Parallel.ForEach()方法并行调用多个方法

    class Program
    {
        static void Main(string[] args)
        {
            Parallel.Invoke(Foo, Bar);
            Console.ReadLine();
        }
        private static void Foo()
        {
            Console.WriteLine("Foo; task:{0};threadis:{1}", Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
        }
        private static void Bar()
        {
            Console.WriteLine("Bar; task:{0};threadis:{1}", Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
        }
    }
时间: 2025-01-15 16:26:38

Parallel类的相关文章

C# Parallel类的作用

System.Threading.Tasks.Parallel是能够以并行的方式迭代数据集合(实现了IEnumerable<T>的对象),它主要提供2个方法:For()和ForEach() 事例: using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Net.ConsoleApplication { public class Student { public string

C#实现多线程的方式:使用Parallel类

简介 在C#中实现多线程的另一个方式是使用Parallel类.  在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 foreach定 义的语言中,循环从一个线程中运行 .Parallel类使用多个任务,因此使用多个线程来完成这个作业.  我们在前文中,对任务作出了一定的阐释,有兴趣的朋友可以前去查看.  Parallel.For()和 Parallel.ForEach()方法多次调用同一个方法,而 Parallel

Parallel类(简化Task 操作)

Parallel类 Parallel类是对线程的一个很好抽象.该类位于System.Threading.Tasks命名空间中,提供了数据和任务并行性. 1.用Parallel.For()方法循环 //// simple scenario ParallelLoopResult result = Parallel.For(0, 10, async i => { Console.WriteLine("{0}, task: {1}, thread: {2}", i, Task.Curre

[深入学习C#]C#实现多线程的方式:使用Parallel类

简介 在C#中实现多线程的另一个方式是使用Parallel类. 在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 foreach定 义的语言中,循环从一个线程中运行 .Parallel类使用多个任务,因此使用多个线程来完成这个作业. 我们在前文中,对任务作出了一定的阐释,有兴趣的朋友可以前去查看. Parallel.For()和 Parallel.ForEach()方法多次调用同一个方法,而 Parallel.In

C# 并行任务——Parallel类

一.Parallel类 Parallel类提供了数据和任务的并行性: 二.Paraller.For() Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务.使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义. 在For()方法中,前两个参数是固定的,这两个参数定义了循环的开头和结束.首先描述它的第一个方法For(int,int,Action<int>),前面两个参数代表循环的开头和介绍,第三个参数是个委托,整数参数是循环的迭代次数,该参数被

c# 用Parallel类来进行并行操作

Parallel 来进行 不需要同步操作的线程任务  非常方便 注意 一定要是 不需要同步的任务 Parallel提供了三个主要的方法 For Foreach Invoke. for方法主要针对数组 共三个参数  分别是 起始序号 末尾序号 和一个Action的委托(无返回值),这是用Lambda表达式写比较方便 1 Parallel.For(0, arr.Length, i => 2 { 3 //直接在这里使用串行循环,则速度很快 4 for (int j = 0; j < Operatio

Parallel类实现并行计算

https://msdn.microsoft.com/zh-cn/ff652648.aspx 图像处理——并行计算的应用实例 http://blog.csdn.net/bitfan/article/details/4713872 http://www.cnblogs.com/xiangism/category/375725.html

Net并行编程高级教程--Parallel

Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机还是生物都并发处理着各种事物.人真是奇怪,当你关注一个事情的时候,你会发现周围的事物中就常出现那个事情.所以好奇心驱使下学习并发.便有了此文. 一.理解硬件线程和软件线程 多核处理器带有一个以上的物理内核--物理内核是真正的独立处理单元,多个物理内核使得多条指令能够

Tasks.Parallel

.Net多线程编程-System.Threading.Tasks.Parallel System.Threading.Tasks.Parallel类提供了Parallel.Invoke,Parallel.For,Parallel.ForEach这三个静态方法. 1 Parallel.Invoke 尽可能并行执行所提供的每个操作,除非用户取消了操作. 方法: 1)public static void Invoke(params Action[] actions); 2)public static