C# 并行运算方法简析

一、概述

首先应该明白并行和并发的区别。
并发就是有多个几乎同时到达的线程需要被处理,但只有有限个CPU,所以需要竞争上岗。
并行指有多个CPU资源同时处理多个线程,不存在竞争的概念,可以大量节省运行时间。

二、实现方法

C#中目前有Tasks命名空间中的Parallel类来完成并行开发。

2.1 Parallel

Parallel类有三个常见的方法:Invoke,For,Foreach,都可以实现多个方法的并行计算。For和ForEach方法多次调用同一个方法, Invoke可以同时调用不同的方法。

2.12 Invoke

stopWatch.Start();Parallel.Invoke(() => { Run1(); }, () => { Run2(); });stopWatch.Stop();
Console.WriteLine("Parallel run " + stopWatch.ElapsedMilliseconds + " ms.");

该方法可以将串行方法并行化,可以调用StopWatch类进行计时。

2.12 For

Parallel.For()可以无序并行运行迭代,类似for循环。

ParallelLoopResult result = Parallel.For(0, 100, (int i, ParallelLoopState pls) =>{Console.WriteLine("i: {0}, task : {1}", i, Task.CurrentId);Thread.Sleep(10);});

2.13 ForEach

该方法无序遍历实现IEnumerable或者List集合。

List<int> list = new List<int>();list.Add(0);Parallel.ForEach(list, item =>{A(item);});

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

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

相关文章

强烈建议使用国外DNS解析域名,解决访问速度和某些访问故障!

域名解析的基本原理是把域名翻译成IP地址&#xff0c;以便计算机能够进一步通信&#xff0c;传递网址和内容等。  域名劫持就是在劫持的网络范围内拦截域名解析的请求&#xff0c;分析请求的域名&#xff0c;把审查范围以外的请求放行&#xff0c;否则直接返回假的IP地址或者…

Windows 8 系统快捷键热键列表收集

值得收藏参考的 Windows 8 系统快捷键热键列表收集大全汇总&#xff0c;键盘党效率党必备啊&#xff01; 相信不少喜欢接触新鲜软件的同学都已经给电脑安装上Windows 8 操作系统了吧&#xff01;这个系统优秀与否我们暂且不讨论&#xff0c;作为一个键盘党&#xff0c;学习了解…

格式化字符串使用

#codingutf-8 可以指定所需长度的字符串的对齐方式: < &#xff08;默认&#xff09;左对齐 > 右对齐 ^ 中间对齐 &#xff08;只用于数字&#xff09;在小数点后进行补齐 print 1:\t|{0:>10},.format(wangyu) print 2:\t|{0:4.2f}.format(1.1415926) print 3:\t|,…

Python中利用plt显示中文标题解决方案

解决方法 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus] False plt.title(灰度级别频率图) plt.show()

Pytorch基础(三)—— DataSet的应用

一、概念 Pytorch的标准数据集包括很多种类型&#xff0c;如CIFAR&#xff0c;COCO&#xff0c;KITTI&#xff0c;MNIST等&#xff0c;我们可以在官网查看。当然我们也可以做数据集&#xff0c;但需要自己标注。 二、如何调用数据集 一、调用torchvision 在程序中调用torch…

【图像处理】——Python霍夫变换之直线检测(主要是两个函数HoughlinesHoughlinesP)

目录 一、原理(摘自《数字图像处理冈萨雷斯》) 2、Python函数 参数详解 3、效果 4、实

实验五实验报告

实 验 报 告 课程&#xff1a;信息安全系统设计基础 班级&#xff1a; 1353 姓名&#xff1a;魏静静 刘虹辰 文艺 学号&#xff1a;20135302 20135325 20135331 成绩&#xff1a; 指导教师&#xff1a;娄佳鹏 实验日期&#xff1a…

Eclipse快捷键 10个最有用的快捷键

Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码&#xff0c;使得整体的开发效率和质量得到提升。 1. ctrlshiftr&#xff1a;打开资源 这可能是所有快捷键组合中最省时间的了…

iOS 检查指定日期是否在当前日期之前

iOS检查指定日期是否在当前日期之前, 直接上代码: - (BOOL)checkProductDate: (NSString *)tempDate {NSDateFormatter *dateFormatter [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:"yyyy-MM-dd"];NSDate *date [dateFormatter dateFromString:t…

Pytorch基础(四)—— 卷积层

一、概念 卷积从数学的角度讲是一种矩阵的运算方法。我们可以用一个卷积核对一个矩阵进行卷积运算&#xff0c;具体运算过程图示可以见pytorch官网。 卷积运算按输入数据的通道数可分为单通道和多通道两种。 单通道是指卷积核只有一个的情况。 多通道包括两种。 分别是单个…

【图像处理】——创建一个新的图片

方法一:直接复制一个已经存在的图片 img.copy() 如果是想生成一个指定大小的图片,则可以通过numpy数组进行创建 方法二:通过numpy创建(注意有坑) img = numpy.zeros((h,w))#h,w是指定的图像的高和宽,这样看似可以其实不然上述方法得到的图像不是8位的,但是图像数组的…

BUAA 更大公约数

题目链接 给一个n*m的矩阵&#xff0c; 删除里面的一行一列&#xff0c; 使得剩下的数的最大公约数最大。 一个格子&#xff08;x&#xff0c;y&#xff09;&#xff0c; 先预处理出&#xff08;1,1)到这个格子的内所有数的最大公约数&#xff0c; 同理处理出(1, m), (n, m), (…

How to make a Logical Volume ON AIX5.3

本文转自 xkdcc 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/brantc/116431&#xff0c;如需转载请自行联系原作者1. 确定要建立的卷大小&#xff0c;比如700M 2. 检查要建立逻辑卷的卷组上的PP大小&#xff08;PP:物理分区&#xff0c;PP si…

启动Tomcat 7一闪而过的问题

点击bin目录&#xff08;"D:\apache-tomcat-7.0.33\bin"&#xff09;下的startup.bat一闪而过&#xff0c;什么都没发生... 解决&#xff1a;环境变量里配置一个JAVA_HOME&#xff0c;值为JDK的home目录&#xff08;"D:\Java\jdk1.7.0_80"&#xff09;转载…

Pytorch基础(五)—— 池化层

一、概念 池化就是把数据压缩的过程&#xff0c;属于下采样的一种方法&#xff0c;可以显著降低神经网络计算复杂度&#xff0c;减少训练中的过拟合&#xff0c;同时可以使数据具有一定的不变性。 池化从方法上来讲可以分为average Pooling、max Pooling、Overlapping Poolin…

【图像处理】——鼠标点击图像的一处,获得点击点的坐标值

import cv2 import numpy as np# 图片路径 img = cv2.imread(5-.jpg) a = [] b = []def on_EVENT_LBUTTONDOWN(event, x, y, flags, param)::param event: 鼠标事件:param x: 点击点的横坐标:param y: #点击点的纵坐标:param flags: :param param: :return: if event == cv2.EV…

解决sybase数据库的死锁问题

在使用数据库操作时&#xff0c;由于多人同时使用&#xff0c;导致数据库某些表无法访问&#xff0c;原因可能是由于多个用户操作同一个表&#xff0c;争抢统一资源出现死锁现象&#xff0c;现将解决死锁的方法总结如下&#xff1a; 1、执行 sp_who 语句&#xff0c;观察执行结…

揭开.NET 2.0配置之谜(一)

2010-03-20 15:33 by 吴秦, 4828 阅读, 20 评论, 收藏, 编辑 此文是译文&#xff0c;原文是Jon Rista&#xff0c;Unraveling the Mysteries of .NET 2.0 Configuration&#xff0c;由于这篇文章比较长&#xff0c;所以我就分为几部分来翻译。 以前没有翻译过外文&#xff0c;看…

Pytorch基础(六)——激活函数

一、概念 激活函数顾名思义&#xff0c;就是一种可以给神经网络注入灵魂的一种方法&#xff0c;也可以称之为激活层。其计算就是将线性的函数转变为非线性函数的过程&#xff0c;只有这样&#xff0c;我们制作的深层神经网络才能无限逼近真实值。 自神经网络发展到目前为止&am…

android数据的五种存储方式

Android提供了5种方式存储数据1 使用SharedPreferences存储数据它的本质是基于XML文件存储key-value键值对数据&#xff0c;通常用来存储一些简单的配置信息。其存储位置在/data/data/< >/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改&…