.NET并行与多线程学习系列一
并行与多线程学习系列一
一、并行初试:
public static void test()
{
for (int i = ; i < ; i++)
{
Console.WriteLine(i);
}
} public static void test1()
{
for (int i = ; i < ; i++)
{
Console.WriteLine(i + "aaaaaaaaaaaaaaa");
}
}
调用:
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
//串行执行:
test();
test1();
//并行执行:
Parallel.Invoke(test, test1);
sw.Stop();
Console.WriteLine("共耗费时间:");
Console.WriteLine(sw.ElapsedMilliseconds / +"s");
}
二、分区并行:
Parallel.ForEach(Partitioner.Create(,,),(x,s)=>{
//并行代码中自定义串行,第三个参数表示item1到item2之间的范围

Console.WriteLine(x);
for (int i = x.Item1; i < x.Item2; i++)
{
if (i == ) break; Console.WriteLine(i);
}
s.Break();// 非常类似普通for循环中的break
if (s.ShouldExitCurrentIteration)
return;
});
三、异常捕获:AggregateException
int[] arry = new int[];
for (int i = ; i < ; i++)
{
arry[i] = i;
}
try
{
Parallel.ForEach(arry, (x, s) =>
{
Console.WriteLine(x);
if (sw.Elapsed.Seconds > )
{
throw new TimeoutException("操作超时");
}
});
}
catch (AggregateException ex)
{
foreach (var item in ex.InnerExceptions)
{
Console.WriteLine(item);
}
}
四、指定并行调度:
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = ;//如果设置为1就类似于串行代码按顺序执行
options.MaxDegreeOfParallelism =Environment.ProcessorCount;//获取计算机上面的处理器数量
Parallel.For(,,options,(x) =>
{
Console.WriteLine(x);
});
五、未完待续...
.NET并行与多线程学习系列一的更多相关文章
- 多线程学习系列二(使用System.Threading)
一.什么是System.Threading.Thread?如何使用System.Threading.Thread进行异步操作 System.Threading.Thread:操作系统实现线程并提供各种 ...
- C# 多线程学习系列三之CLR线程池系列之ThreadPool
一.CLR线程池 1.进程和CLR的关系一个进程可以只包含一个CLR,也可以包含多个CLR2.CLR和AppDomain的关系一个CLR可以包含多个AppDomain3.CLR和线程池的关系一个CLR ...
- C# 多线程学习系列二
一.关于前台线程和后台线程 1.简介 CLR中线程分为两种类型,一种是前台线程.另一种是后台线程. 前台线程:应用程序的主线程.Thread构造的线程都默认为前台线程 后台线程:线程池线程都为后台线程 ...
- C# 多线程学习系列一
一.Windows线程的由来 关于操作系统的一些知识 (1).单个"工作线程"的问题 早期的Windows没有线程的概念,整个系统只有一个"工作线程",上面同 ...
- Qt C++ 并发,并行,多线程编程系列1 什么是并发
什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见.如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发. 在计算机的系统里面,并发一般有两种, ...
- C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用
1.简介 虽然ThreadPool.Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常.或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它 ...
- C#多线程学习(一) 多线程的相关概念(转)
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...
- C#多线程学习(一) 多线程的相关概念
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...
- [转载]C#多线程学习(一) 多线程的相关概念
原文地址:http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的 ...
随机推荐
- jquery+ligerform三级联动下拉框
如下为ligerform里的三级联动下拉框: var formData=[ {display:,width:,space:,type:"select",group:"区域 ...
- Error with mysqld_safe
出处:http://bugs.mysql.com/bug.php?id=18403 Description: - I downloaded the binary file “Standard 5.0. ...
- IOS开发苹果官方Sample Code及下载地址
IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...
- MySql处理数据库和表
show databases; mysql> show databases; mysql> create database db_test; Query OK, 1 row affecte ...
- [翻译]初识SQL Server 2005 Reporting Services Part 3
原文:[翻译]初识SQL Server 2005 Reporting Services Part 3 这是关于SSRS文章中四部分的第三部分.Part 1提供了一个创建基本报表的递阶教程.Part 2 ...
- 【分享】SAS统计分析软件学习教程电子书合集下载
SAS是著名的统计分析软件,全称为Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究生编制,并于1976年成立了SAS软件研究所,正式推出了SAS软件. 转 ...
- Web缓存(Varnish方案)
Web缓存(Varnish方案) 转载 http://www.s135.com/post/313/ arnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (htt ...
- async/task/await
async/task/await三组合是.NET Framework 4.5带给.NET开发者的大礼,合理地使用它,可以提高应用程序的吞吐能力. 但是它的使用有点绕人,如果不正确使用,会带来意想不到的 ...
- C#编程总结
C#编程总结--总目录 多年的C#实战经历,希望通过一个系列课程对C#编程做系统总结. 总结过去,展望未来.新的一年,新的征程,新的开始! 希望我们在2014梦想成真,马到成功! 1.C#编程总结(一 ...
- Dynamics CRM 2013 报表开发:安装开发工具
最近项目需要开发报表,顺便看了下,首先需要配置开发环境.需要的工具为: 1.Business Intelligence Development Studio 可下载Sql Server 的安装包,选择 ...