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

本文详细介绍了C#中实现多线程的一种方式——使用Parallel类,包括Parallel.For()、Parallel.ForEach()和Parallel.Invoke()的用法。Parallel.For()支持中断循环,可以通过ParallelLoopState.Break()或Stop()控制。Parallel.ForEach()同样可以中断并行遍历,且不保证顺序。Parallel.Invoke()则用于同时调用多个方法。
摘要由CSDN通过智能技术生成

简介

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

使用Parallel.For()方法

  基本使用方法

  Parallel.For()方法类似于 C#的 for循环语旬,也是多次执行一个任务。使用Parallel.For()方法,可以并行运行迭代。 迭代的顺序没有定义。
  在For()方法中,前两个参数定义了循环的开头和结束。示例从0迭代到 9。第 3个参数是一个Action<int>委托。 整数参数是循环的迭代次数,该 参数被传递给Action<int>委托引用的方法。Parallel.For()方法的返回类型是ParalleLoopResult结构,它提供了循环是否结束的信息。

ParallelLoopResult result = Parallel.For(0, 10, i =>
            {
                Console.WriteLine("{0}, task : {1}, thread : {2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
            });
            Console.WriteLine(result.IsCompleted);
            Console.ReadKey();

  在Parallel.For()的方法体中,把索引、任务标识符和线程标识符写入控制台中。从下面的输出截图可以看出,由于每次循环都开启了新的任务和线程,因此每个线程的执行顺序是不能保证的。
  这里写图片描述这里写图片描述

  中断循环

  同For()循环类似,Parallel.For()方法也可以中断循环的执行。
  Parallel.For()方法的一个重载版本接受第3个Action<int, ParallelLoopState>类型的参数。使用这些参数定义一个方法,就可以调用ParalleLoopState的Break()或Stop()方法,以影响循环的结果。
  注意,迭代的顺序没有定义。

 ParallelLoopResult result = Parallel.For
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值