本文摘自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#中关于infinity与nan的简单介绍
.net mvc 连接数据本地数据库三种方法总结
c#中自定义控件如何实现textbox禁止粘贴的示例代码
.net是什么
为 jenkins 配置 .net 持续集成环境
c#中匿名委托以及lambda表达式的实例详解
.net中xml转换成treeview视图
.net 打开文件
c#如何实现json与对象之间互相转换功能示例
c#实现表格隔行换色
更多相关阅读请进入《.net》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 详细介绍.NET并行与多线程学习基础