该类定义了并行的For和Foreach方法,Parallel类使用多个任务,因此需要多个线程来完成这个作业

代码及简单注释如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;namespace ConsoleApplication1
{class Program{//Parallel.For多次调用同一个方法static public void formathod(){//函数原型:Parallel.For<TLocal>(Int32, Int32, Func<TLocal>, Func<Int32, ParallelLoopState, TLocal, TLocal>, Action<TLocal>)//定义一个本地数据为string类型的数据,执行Func<TLocal>委托对本地数据初始化,然后将每个迭代调用一次Func<Int32, ParallelLoopState, TLocal, TLocal>委托,最后执行 Action<TLocal>委托对本地状态进行最后处理Parallel.For<string>(0, 20, () =>{Console.WriteLine("Task{0} is begin", Task.CurrentId);return string.Format("Task{0}", Thread.CurrentThread.ManagedThreadId);},(i, pls, str) =>{Thread.Sleep(1000);return string.Format("Task{0}", i);},(str) =>{Console.WriteLine("{0} is over", str);});}static public void formathod1(){//函数原型:For(Int32, Int32, Action<Int32>)//以下实例则为从0迭代到10,每一次都调用Action<i>这个委托,返回参数提供了循环是否结束的消息ParallelLoopResult result =Parallel.For(0, 10, i =>{Thread.Sleep(100);Console.WriteLine("Thread{0},Task{1}", Thread.CurrentThread.ManagedThreadId, Task.CurrentId);});Console.WriteLine(result.IsCompleted);}static public void foreachmethod(){//Parallel.ForEach函数原型为:Parallel.ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)//IEnumerable<TSource>为公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。//以下代码为迭代集合上的元素,并为他们执行lambda表达式(Action<TSource>委托)string[] data = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };Parallel.ForEach<string>(data, s =>{Thread.Sleep(1000);Console.WriteLine(s);});}static void Main(string[] args){formathod1();formathod();foreachmethod();}}
}

转载于:https://www.cnblogs.com/runninglzw/p/3848257.html

抽象线程之Parallel类相关推荐

  1. 【C#】线程之Parallel

    在一些常见的编程情形中,使用任务也许能提升性能.为了简化变成,静态类System.Threading.Tasks.Parallel封装了这些常见的情形,它内部使用Task对象. Parallel.Fo ...

  2. JavaSE学习52:细说多线程之Thread类和Runable接口

    一线程创建的两种方式比较 线程创建和启动有两种方式,这里只是列出步骤,不再进行详细解释. (1)继承Thread类 [java] view plaincopy print? class MyThrea ...

  3. C# 多线程之Thread类

    // 摘要: // 初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.//// 参数: // start:// System.Threadi ...

  4. java thread类_java多线程之Thread类

    Class Thread java.lang.Object java.lang.Thread 实现接口:Runnable 直接被继承的子类:ForkJoinWorkerThread public cl ...

  5. 多线程之Thread类

    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...

  6. JAVA线程之Thread类详解

    Thread类用于操作线程,是所以涉及到线程操作(如并发)的基础.本文将通过源码对Thread类的功能作用进行分析. 一.属性 /* Make sure registerNatives is the ...

  7. 异步多线程之Parallel详解

    上一篇:异步多线程之入Task 下一篇:异步多线程使用中的常见问题 简介 Parallel 叫做并行编程 .Net 4.5 时代的,基于 Task 基础上做了封装.Parallel 的特点方便控制线程 ...

  8. linux 线程pthread_detach,linux线程之pthread_join和pthread_detach

    在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反 ...

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

    简介 在C#中实现多线程的另一个方式是使用Parallel类.  在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 f ...

最新文章

  1. 2019建中台,2020拆中台,为什么很多公司中台战略宣告“失败”?
  2. leetcode 599. 两个列表的最小索引总和(Minimum Index Sum of Two Lists)
  3. fst java_java快速序列化库FST
  4. xenserver 安装新硬盘_给Xenserver添加新硬盘
  5. 【机器学习】梯度下降原理
  6. mask_rcnn训练自己的数据集
  7. 什么是sql注入_什么是Python SQL注入?又如何使用Python防止SQL注入攻击呢?
  8. 在浏览器上打开swf文件时变成了下载swf文件解决方式
  9. 【计算机体系结构实验】指令调度和延迟分支
  10. 知乎高赞:无人驾驶什么时候才会凉凉,估计还要多久?
  11. java 异常之Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed
  12. Could NOT find CUDA (missing: CUDA_INCLUDE_DIRS) (found suitable exact version “11.4“)
  13. kafka干货(五):kakfka的python客户端----Confluent-kafka
  14. matlab图片白边_matlab绘图白边设定
  15. 《一条狗的使命》观后感
  16. 5G 帧结构、物理资源与物理信道
  17. ios应用中添加广告
  18. vb.net 教程 1-12 Hashtable
  19. [Warning] IPv4 forwarding is disabled. Networking will not work.
  20. 关于B85M-V Plus支持AHCI驱动问题

热门文章

  1. deepin tim(wine)无法安装_浅析国产操作系统深度deepin
  2. 十四、MySQL函数相关知识总结(简单易懂)
  3. LeetCode547. Friends Circles 利用union find | bfs | dfs三种方法解决
  4. LeetCode 1930. 长度为 3 的不同回文子序列(计数)
  5. 天池 在线编程 音乐组合
  6. 05.序列模型 W2.自然语言处理与词嵌入
  7. LeetCode 1536. 排布二进制网格的最少交换次数
  8. LeetCode 870. 优势洗牌(贪心 二分查找)
  9. 查看宝塔面板账号密码命令_宝塔面板升级到最新版图文教程
  10. mac python安装太慢_【已解决】Mac中给pip3添加代理以提升下载python包的速度