首页 后端开发 C#.Net教程 C# 并行任务之Parallel类的实例介绍

C# 并行任务之Parallel类的实例介绍

Jun 23, 2017 pm 03:13 PM
.net 任务 并行

一、Parallel类

      Parallel类提供了数据和任务的并行性;

二、Paraller.For()

      Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义。

      在For()方法中,前两个参数是固定的,这两个参数定义了循环的开头和结束。首先描述它的第一个方法For(int,int,Action),前面两个参数代表循环的开头和介绍,第三个参数是个委托,整数参数是循环的迭代次数,该参数被传递给委托引用的方法。Paraller.For()方法的返回类型是ParallelLoopResult结构,它提供了循环是否结束的信息和最低迭代的索引(返回一个表示从中调用 Break 语句的最低迭代的整数)。先写个例子:

            ParallelLoopResult result = Parallel.For(0, 10, i =>{
                Console.WriteLine("迭代次数:{0},任务ID:{1},线程ID:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(10);
            });

            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
登录后复制

输出结果如下:

可以看到,该委托方法运行了10次,顺序也是不能被保证的。但是最低迭代并没有数据出来,这是因为他是返回调用 Break 语句的最低迭代的整数,在这我们并没有break。如果需要才执行过程中提前中断For()方法,就可以使用ParallelLoopState来实现,For(int,int,Action)。就上面的例子改一下:

            ParallelLoopResult result = Parallel.For(0, 10, (i, state) =>{
                Console.WriteLine("迭代次数:{0},任务ID:{1},线程ID:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(10);if (i > 5)
                    state.Break();
            });

            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
登录后复制

输出结果如下:

三、Parallel.ForEach()

      Paraller.ForEach()方法遍历实现了IEnumerable的集合,其方法类似于 foreach的语句,但以异步方式遍历,这里也没有确定遍历顺序。首先描述它的第一个方法,Paraller.ForEach(IEnumerable,Action),先看下面的例子;

            string[] data = { "str1", "str2", "str3" };
            ParallelLoopResult result = Parallel.ForEach<string>(data, str =>  {
                  Console.WriteLine(str);
              });
            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
登录后复制

输出结果如下:

它也可以像For一样传入迭代次数和ParallelLoopState的,方法是ForEach(IEnumerable source, Action body),接着在上面的例子改动

            string[] data = { "str1", "str2", "str3", "str4", "str5" };
            ParallelLoopResult result = Parallel.ForEach<string>(data, (str, state, i) =>  {
                  Console.WriteLine("迭代次数:{0},{1}", i, str);                  if (i > 3)
                      state.Break();
              });
            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
登录后复制

输出结果如下:

四、Parallel.Invoke()

      Parallel.Invoke()方法,它提供了任务并行性模式。Paraller.Invoke()方法允许传递一个Action委托数组,在其中可以指定应运行的方法,看下面的例子

            Parallel.Invoke(() =>{
                Thread.Sleep(100);
                Console.WriteLine("method1");
            }, () =>{
                Thread.Sleep(10);
                Console.WriteLine("method2");
            });
登录后复制

输出结果如下:

五、结语

      Parallel.For()和Paraller.ForEach()方法在每次迭代中调用相同的代码,而Parallel.Invoke()方法允许同时调用不同的方法。Parallel.ForEach()用于数据并行性,Parallel.Invoke()用于任务并行性;

      

 

 

      

以上是C# 并行任务之Parallel类的实例介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

模拟山羊3恐怖走廊任务怎么做 模拟山羊3恐怖走廊任务怎么做 Feb 25, 2024 pm 03:40 PM

恐怖走廊是模拟山羊3之中的一个任务,这个任务要怎么样才能够去完成呢,掌握到详细的过关方式和对应的流程,能够完成这个任务的相应挑战,下面就为大家带来模拟山羊3恐怖走廊攻略,了解相关的信息。模拟山羊3恐怖走廊攻略1、首先需要玩家前往地图左上角的寂静岭处。2、在这里可以看到一个屋顶上写着RESTSTOP的房子,玩家需要操作山羊进入这个房子。3、进入房间之后,我们首先向前直走,随后向右转,在这里尽头有一扇门,我们直接从这里进去。4、进入之后同样是先向前走随后右转,在这里走到门前门会关上,我们需要回头找到

模拟山羊3帝陵任务怎么过 模拟山羊3帝陵任务怎么过 Mar 11, 2024 pm 01:10 PM

模拟山羊3是有着经典模拟玩法的游戏,可让玩家充分体验到休闲动作类操作模拟的乐趣,游戏中还拥有很多特色任务的精彩,其中模拟山羊3帝陵任务是需要玩家找寻到钟塔上的三个钟并操作的,一些玩家还不清楚要怎么弄,下面带来模拟山羊3帝陵任务攻略流程分享!模拟山羊3帝陵任务攻略流程按照顺序敲击钟即可。详细步骤拓展1、首先玩家需要打开地图去到雾丘公墓。2、然后上到钟楼上,里面会有着三个钟。3、接着按照从大到小的顺序,按照222312312熟悉怒敲击。4、完成敲击后即可完成任务,并打开大门获得光剑。

修复: 操作员拒绝 Windows 任务计划程序中的请求错误 修复: 操作员拒绝 Windows 任务计划程序中的请求错误 Aug 01, 2023 pm 08:43 PM

要自动化任务和管理多个系统,任务计划软件是您武器库中的宝贵工具,尤其是对于系统管理员而言。Windows任务计划程序完美地完成了这项工作,但最近许多人报告说操作员拒绝了请求错误。该问题存在于操作系统的所有迭代中,即使已经广泛报告和涵盖,也没有有效的解决方案。继续阅读以找到真正对其他人有用的内容!操作员或管理员拒绝了任务计划程序0x800710e0中的请求是什么?任务计划程序允许在没有用户输入的情况下自动执行各种任务和应用程序。您可以使用它来安排和组织特定应用程序、配置自动通知、帮助传递消息等。它

模拟山羊3营救史蒂夫任务怎么做 模拟山羊3营救史蒂夫任务怎么做 Feb 25, 2024 pm 03:34 PM

营救史蒂夫是模拟山羊3中的一个独特任务,具体需要怎么做才能够完成呢,这个任务比较简单,但是我们需要注意不要理解错意思,下面就为大家带来模拟山羊3营救史蒂夫任务攻略,能够更好的完成相关的任务。模拟山羊3营救史蒂夫任务攻略1、首先来到地图中右下角的温泉。2、在来到温泉边上之后就可以触发营救史蒂夫的这个任务。3、注意在温泉里有个男人,虽然他也叫史蒂夫,但是并不是本次任务的目标。4、在这个温泉里找到一条叫史蒂夫的鱼,并且将其带上岸,即可完成这个任务。

抖音粉丝团任务在哪里看?抖音粉丝团会掉等级吗? 抖音粉丝团任务在哪里看?抖音粉丝团会掉等级吗? Mar 07, 2024 pm 05:25 PM

抖音作为当下最受欢迎的社交媒体平台之一,吸引了大量用户参与其中。在抖音上,有很多粉丝团任务可供用户完成,从而获得一定的奖励和福利。那么,抖音粉丝团任务在哪里可以找到呢?一、抖音粉丝团任务在哪里看?为了找到抖音粉丝团任务,你需要访问抖音的个人主页。在主页上,你会看到一个名为“粉丝团”的选项。点击这个选项,你就可以浏览你所加入的粉丝团和相关任务。在粉丝团任务栏目中,你会看到各种不同类型的任务,如点赞、评论、分享、转发等。每个任务都有对应的奖励和要求,一般来说,完成任务后会获得一定数量的金币或者经验值

如何在 Windows 11 中停止任务管理器进程更新并更方便地终止任务 如何在 Windows 11 中停止任务管理器进程更新并更方便地终止任务 Aug 20, 2023 am 11:05 AM

如何在Windows11和Windows10中暂停任务管理器进程更新按CTRL+窗口键+删除打开任务管理器。默认情况下,任务管理器将打开“进程”窗口。正如您在此处看到的,所有应用程序都在无休止地移动,当您想要选择它们时,可能很难将它们指向下方。因此,按CTRL并按住它,这将暂停任务管理器。您仍然可以选择应用程序,甚至可以向下滚动,但您必须始终按住CTRL按钮。

时序分析五边形战士!清华提出TimesNet:预测、填补、分类、检测全面领先 时序分析五边形战士!清华提出TimesNet:预测、填补、分类、检测全面领先 Apr 11, 2023 pm 07:34 PM

实现任务通用是深度学习基础模型研究的核心问题,也是近期大模型方向的主要关注点之一。然而,在时间序列领域,各类分析任务的差别较大,既有需要细粒度建模的预测任务,也有需要提取高层语义信息的分类任务。如何构建统一的深度基础模型高效地完成各类时序分析任务,此前尚未有成型方案。为此,来自清华大学软件学院的团队围绕时序变化建模这一基本问题展开研究,提出了任务通用的时序基础模型TimesNet,论文被ICLR 2023接收。作者列表:吴海旭*,胡腾戈*,刘雍*,周航,王建民,龙明盛链接:https://ope

一切关于Windows 11任务栏中的'结束任务”选项的重要信息 一切关于Windows 11任务栏中的'结束任务”选项的重要信息 Aug 25, 2023 pm 12:29 PM

冻结或无响应的程序很容易从任务管理器中杀死。但是Microsoft最近为用户提供了直接从任务栏终止这些任务的便利。虽然该选项并未向所有人推出,但如果您有WindowsInsider版本,则很容易获得。以下是启用“结束任务”按钮并从任务栏关闭任务所需的一切。如何从任务栏中获取“结束任务”按钮以杀死应用目前,为任务栏应用启用“结束任务”按钮的选项仅作为具有Windows预览体验成员版本的用户的开发人员选项提供。但是,这在即将推出的功能更新中可能会发生变化,因为它将在稳定版本上向全球用户推出。如果您尚

See all articles