抽象线程之Parallel类

该类定义了并行的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu16.04编译安装c++ opencv与vscode配置debug

一&#xff0e;编译安装c opencv 1.下载zip包 本文安装的是opencv3.4.3,下载链接&#xff0c;以Sources方式下载zip包&#xff0e; 2.安装依赖 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat…

【年终盘点】2018年十大新型机器人

来源&#xff1a;网易智能摘要&#xff1a;2018年&#xff0c;机器人行业迎来了丰收——随着新型机器和高级人工智能的出现&#xff0c;各类机器人都在各自的领域都取得了重大的进步&#xff0c;例如家用机器人、工业机器人、医疗机器人、生物机器人和玩具机器人。今年&#xf…

leetcode hot100(第二部分) + python(c++)

50-1. 乘积最大子数组 思路1:找到状态转移方程: maxf[i]:表示在i处最大连乘数 minf[i]:表示在i处最小连乘数 maxf[i] max(nums[i],nums[i]*minf[i-1],nums[i]*maxf[i-1]) minf[i] min(nums[i],nums[i]*minf[i-1],nums[i]*maxf[i-1]) #maxf[i]:表示在i处最大连乘数 #minf[i]…

自动驾驶真的会来得那么快吗:关于自动驾驶的7个疑问

来源&#xff1a;资本实验室自动驾驶汽车的研发已经成为全球热潮。无论是像谷歌、百度、Uber这样的互联网巨头&#xff0c;还是丰田、通用、福特这样的老牌汽车制造商&#xff0c;都在以大量的人力、资金向自动驾驶领域下注。然而&#xff0c;无论是Waymo推出首个自动驾驶汽车商…

安卓学习第9课——计时器chronometer

今天学习了钟表及计时器。。 我觉得AnalogClock和DigitalClock直接使用就可以。唯一需要知道的就是AnalogClock是可以修改表盘和分针时针的。 方法是android:dail及android:hand_minute和hand_hour. 下面介绍的是计时器的用法。 首先xml中只要放入一个chronometer和一个按钮即可…

git的一些操作

一.git工作原理/流程: workspace: (除去.git)看见的目录。 版本库(Repository)&#xff1a;工作区有一个隐藏目录.git就叫版本库。其中版本库里面存了很多东西&#xff0c;最重要的就是stage(暂存区)&#xff0c;还有Git为我们自动创建了第一个分支master,以及指向master的一…

从GE数字化业务大调整看工业互联网未来

来源&#xff1a;财经杂志2018年&#xff0c;工业互联网依然是制造业数字化转型中最热的话题&#xff0c;“工业4.0”、“中国制造2025”这些制造业的热门话题在热度上已经明显让位于工业互联网。工信部官网信息显示&#xff0c;从1月国务院发布《关于深化“互联网先进制造业”…

clion卸载+clion连接docker编写trt程序

一.卸载 # 删除安装文件夹 1.rm -r clion-2021.1.1 # 删除配置文件 2.sudo rm -rf ~/.config/JetBrains/CLion2021.1 二.连接docker 由于本地机器没有gpu,学习trt加速模型很难受,经过一段时间摸索和请教别人,最后采用clion连接docker进行trt学习,下载安装很简单,这里主要介绍…

如何对抗硬件断点--- 调试寄存器

1.前言 在我跨入ollydbg的门的时候&#xff0c;就对ollydbg里面的各种断点充满了疑问&#xff0c;以前我总是不明白普通断点&#xff0c;内存断点&#xff0c;硬件断点有什么区别&#xff0c;他们为什么 有些时候不能混用&#xff0c;他们的原理是什么&#xff0c;在学习了前辈…

2019 半导体领袖新年展望(一)| 半导体行业观察

来源&#xff1a;半导体行业观察摘要&#xff1a;为了让大家更好地了解半导体厂商2019年的规划&#xff0c;我们整理了三十多家国内外产业链供应商参与了这次讨论&#xff0c;给大家呈现一个完整的2019半导体面面观。过去一年的半导体产业波谲云诡&#xff01;曾经供不应求的被…

正确的 zip 压缩与解压代码

网上流传的zip压缩与解压 的代码有非常大的问题 尽管使用了ant进行压缩与解压&#xff0c;可是任务的流程还是用的java.util.zip 的方式写的&#xff0c;我在使用的过程中遇到了压缩的文件夹结构有误&#xff0c;甚至出现不同解压软件显示的文件夹结构不同的窘境。 以下给出使用…

String和STL的一些基础知识

一.STL&#xff08;标准模板库&#xff09;的六大组件:容器&#xff0c;算法&#xff0c;迭代器&#xff0c;仿函数&#xff0c;适配器&#xff08;配接器&#xff09;&#xff0c;空间配置器 1.容器:各种数据结构&#xff0c;vector,list,deque,unordered_set&#xff1b; 2.…

机器学习如何借鉴人类的视觉识别学习?让我们从婴幼儿的视觉学习说起

来源&#xff1a;AI科技评论当只需要把大规模标注图像数据库塞给深度神经网络就可以得到高准确率的物体分类模型之后&#xff0c;有很多研究人员开始考虑更深入的问题&#xff1a;人类的视觉识别学习过程是怎样的&#xff1f;以及既然人类视觉系统与计算机视觉系统之间表现出了…

ggplot2绘图入门系列之四:再说散点图

1 色彩和形状的控制 数据特征不仅可以用坐标来表示&#xff0c;也可以用不同的色彩或形状来表示。仍以mpg数据集为例&#xff0c;所用到的变量有cty&#xff08;城市中行驶距离&#xff09;,hwy&#xff08;高速路行驶距离&#xff09;,displ&#xff08;排量大小&#xff09;,…

2019年物联网发展的六大趋势

来源&#xff1a;资本实验室摘要&#xff1a;在人类发展史上&#xff0c;通讯技术的每次革命性突破&#xff0c;都会让我们离完全的数字化社会越来越近。当现金变成微信和支付宝&#xff1b;当逛商场变成逛淘宝&#xff1b;当叫出租车变成叫滴滴&#xff1b;当“您好”变成“您…

exec函数簇

exec一共有六种函数&#xff0c;都是以exec开头。 1 int execl(const char *path, const char *arg, ...); 2 int execlp(const char *file, const char *arg, ...); 3 int execle(const char *path, const char *arg, ..., char * const envp[]); 4 int execv(const char *pat…

gdb基础知识

文档 一.gdb打印demo.cpp运行结果 在CMakeLists.txt中添加 set(CMAKE_BUILD_TYPE Debug) 然后make以后通过gdb filename进入该文件的gdb调试模式,同时使用shell 就可以像终端一样使用shell命令。 例子: demo.cpp #include <iostream> #include <vector> #i…

重磅!罗振宇跨年演讲:扎心5问

来源&#xff1a;亿欧网摘要&#xff1a;我们不断追问“这个世界到底是什么样子的&#xff1f;”今年罗振宇在“2018时间的朋友跨年演讲”中给出的解题思路是&#xff1a;小趋势。2018年12月31日晚&#xff0c;“2018时间的朋友跨年演讲”在深圳春茧体育馆拉开帷幕。从4000人的…

C++ opencv的一些基础知识

一&#xff0e;基础知识 1.cv::mat type返回数字对应的类型 C1, C2, C3, C4 指的是通道(Channel)数&#xff0c;比如3通道的float 32&#xff1a; cv::Mat M5 cv::Mat::zeros(2, 3, CV_32FC(3)); 2.at方法数据类型 知道通道数和每个通道数据类型的情况下&#xff0c;指定给…

centos 6.5 x64编译有python的vim7.4

wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gzwget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gzwget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 下载后&#xff0c;解压 tar jxf vim-7.4.tar.bz2tar zxf vim-7.2-extra.tar.gztar zxf vim-7.2-l…