本文摘自PHP中文网,作者迷茫,侵删。
一、并行初试:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static void test()
{
for ( int i = 0; i < 10000; i++)
{
Console.WriteLine(i);
}
}
public static void test1()
{
for ( int i = 0; i < 10000; i++)
{
Console.WriteLine(i + "aaaaaaaaaaaaaaa" );
}
}
|
调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 | static void Main( string [] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
test();
test1();
17Parallel.Invoke(test, test1);
19sw.Stop();
21Console.WriteLine( "共耗费时间:" );
23Console.WriteLine(sw.ElapsedMilliseconds / 1000+ "s" );
}
|
二、分区并行:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Parallel.ForEach(Partitioner.Create(1,20,5),(x,s)=>{
Console.WriteLine(x);
for ( int i = x.Item1; i < x.Item2; i++)
{
if (i == 10) break ;
Console.WriteLine(i);
}
s.Break();
if (s.ShouldExitCurrentIteration)
return ;
});
|
三、异常捕获:AggregateException
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | int [] arry = new int [10001];
for ( int i = 0; i < 10000; i++)
{
arry[i] = i;
}
try
{
Parallel.ForEach(arry, (x, s) =>
{
Console.WriteLine(x);
if (sw.Elapsed.Seconds > 3)
{
throw new TimeoutException( "操作超时" );
}
});
}
catch (AggregateException ex)
{
foreach ( var item in ex.InnerExceptions)
{
Console.WriteLine(item);
}
}
|
四、指定并行调度:
1 2 3 4 5 6 7 | ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 1;
options.MaxDegreeOfParallelism =Environment.ProcessorCount;
Parallel.For(1,10,options,(x) =>
{
Console.WriteLine(x);
});
|
以上就是详细介绍.NET并行与多线程学习基础的详细内容!
相关阅读 >>
c#中发送邮件的实现方法详解
.net core对mongodb执行多条件查询
详细介绍一个.net开源权限管理系统
.net下如何使用quartz.net的代码图文教程
代码分析:在.net core中使用ref和span<t>提高程序性能
c#中多线程之thread类详解
分享一个ioc入门教程实例
比较.net中接口与类
c#中关于静态与非静态方法的区别介绍
c# .net 将list序列化
更多相关阅读请进入《.net》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 详细介绍.NET并行与多线程学习基础