本文摘自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#中sql参数传入空值出错误和如何解决办法
.net是什么
.net中创建webservice服务的实例分析(图文)
c#实现与现有.net事件桥接的简单代码
asp .net 面试题及答案分享
c#之浮点数计算问题的解决
c#如何实现添加和修改以及删除pdf书签的方法介绍
c#开发中遇到的问题分享
.net framework有什么用
.net core mvc实现一个在线房间棋牌游戏微信支付和及时通讯的简易框架
更多相关阅读请进入《.net》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 详细介绍.NET并行与多线程学习基础