C#并行循环的使用

c#中提供并行循环的类为parallel类,该类的位于system.Threading.Tasks命名空间下,对应的文件为System.Threading.Tasks.Parallel.dll

parallel中提供并行操作的方法有

  1. parallel.invoke():尽可能并行执行所请求的每个操作。
  2. parallel.for():提供并行执行的for循环
  3. parallel.foreach()提供并行化的foreach操作

以上三个方法均具有多个重载

我们用下面的代码来测试并行invoke方法和for循环的效果

代码中使用的stopwatch类是系统系统的用来精确测量代码运行耗时的类型。可以利用该对象测量程序运行的耗时。

 class Program
 1  class Program
 2     {
 3         static  void Main(string[] args)
 4         {
 5             Stopwatch Sw = new Stopwatch();
 6             Action[] act = new Action[2];
 7             Sw.Start();
 8             Parallel.Invoke(seeme, seeyou);
 9             Sw.Stop();
10             Console.WriteLine("并行执行seeme和seeyou所用的时间为{0}ms", Sw.ElapsedMilliseconds);
11             Sw.Restart();
12             for (int i = 0; i < 10; i++)
13             {
14                 Console.WriteLine("这是第{0}次循环", i);
15                 Thread.Sleep(1000);
16                 
17             }
18             Sw.Stop();
19             Console.WriteLine("单循环耗时{0}ms", Sw.ElapsedMilliseconds);
20             Sw.Restart();
21             Parallel.For(0, 10, (i) =>
22             {
23                 Console.WriteLine("这是第{0}次循环",i);
24                 Thread.Sleep(1000);
25             });
26             Sw.Stop();
27             Console.WriteLine("并行循环的耗时:{0}ms", Sw.ElapsedMilliseconds);
28             Sw.Restart();
29             seeme();
30             seeyou();
31             Sw.Stop();
32             Console.WriteLine("顺序执行seeme和seeyou所用的时间为{0}ms", Sw.ElapsedMilliseconds);
33             Console.ReadKey();
34         }
35         public static void seeme( )
36         {
37             Console.WriteLine("我开始了");
38             Thread.Sleep(2000);
39             Console.WriteLine("我结束了");
40         }
41         public static void seeyou( )
42         {
43             Console.WriteLine("你开始了");
44             Thread.Sleep(3000);
45             Console.WriteLine("你结束了");
46         }
47     }

代码运行的效果如下:

 从上面的代码看出并行循环的的执行是没有顺序的,在需要耗费大量时间的循环操作中,使用并行循环可以显著的节省时间。 
posted @ 2020-08-20 15:44  Dark_Elf  阅读(1217)  评论(0编辑  收藏  举报