并行与多线程学习系列一

一、并行初试:

 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并行与多线程学习系列一的更多相关文章

  1. 多线程学习系列二(使用System.Threading)

    一.什么是System.Threading.Thread?如何使用System.Threading.Thread进行异步操作 System.Threading.Thread:操作系统实现线程并提供各种 ...

  2. C# 多线程学习系列三之CLR线程池系列之ThreadPool

    一.CLR线程池 1.进程和CLR的关系一个进程可以只包含一个CLR,也可以包含多个CLR2.CLR和AppDomain的关系一个CLR可以包含多个AppDomain3.CLR和线程池的关系一个CLR ...

  3. C# 多线程学习系列二

    一.关于前台线程和后台线程 1.简介 CLR中线程分为两种类型,一种是前台线程.另一种是后台线程. 前台线程:应用程序的主线程.Thread构造的线程都默认为前台线程 后台线程:线程池线程都为后台线程 ...

  4. C# 多线程学习系列一

    一.Windows线程的由来  关于操作系统的一些知识 (1).单个"工作线程"的问题 早期的Windows没有线程的概念,整个系统只有一个"工作线程",上面同 ...

  5. Qt C++ 并发,并行,多线程编程系列1 什么是并发

    什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见.如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发. 在计算机的系统里面,并发一般有两种, ...

  6. C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用

    1.简介 虽然ThreadPool.Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常.或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它 ...

  7. C#多线程学习(一) 多线程的相关概念(转)

    什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...

  8. C#多线程学习(一) 多线程的相关概念

    什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...

  9. [转载]C#多线程学习(一) 多线程的相关概念

    原文地址:http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的 ...

随机推荐

  1. jquery+ligerform三级联动下拉框

    如下为ligerform里的三级联动下拉框: var formData=[ {display:,width:,space:,type:"select",group:"区域 ...

  2. Error with mysqld_safe

    出处:http://bugs.mysql.com/bug.php?id=18403 Description: - I downloaded the binary file “Standard 5.0. ...

  3. IOS开发苹果官方Sample Code及下载地址

    IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...

  4. MySql处理数据库和表

    show databases; mysql> show databases; mysql> create database db_test; Query OK, 1 row affecte ...

  5. [翻译]初识SQL Server 2005 Reporting Services Part 3

    原文:[翻译]初识SQL Server 2005 Reporting Services Part 3 这是关于SSRS文章中四部分的第三部分.Part 1提供了一个创建基本报表的递阶教程.Part 2 ...

  6. 【分享】SAS统计分析软件学习教程电子书合集下载

    SAS是著名的统计分析软件,全称为Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究生编制,并于1976年成立了SAS软件研究所,正式推出了SAS软件. 转 ...

  7. Web缓存(Varnish方案)

    Web缓存(Varnish方案) 转载 http://www.s135.com/post/313/ arnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (htt ...

  8. async/task/await

    async/task/await三组合是.NET Framework 4.5带给.NET开发者的大礼,合理地使用它,可以提高应用程序的吞吐能力. 但是它的使用有点绕人,如果不正确使用,会带来意想不到的 ...

  9. C#编程总结

    C#编程总结--总目录 多年的C#实战经历,希望通过一个系列课程对C#编程做系统总结. 总结过去,展望未来.新的一年,新的征程,新的开始! 希望我们在2014梦想成真,马到成功! 1.C#编程总结(一 ...

  10. Dynamics CRM 2013 报表开发:安装开发工具

    最近项目需要开发报表,顺便看了下,首先需要配置开发环境.需要的工具为: 1.Business Intelligence Development Studio 可下载Sql Server 的安装包,选择 ...