当前位置: 首页 > news >正文

公司想建一个网站找谁做基于wordpress学校网站

公司想建一个网站找谁做,基于wordpress学校网站,建立个人网页,中学网站模板下载一、 Parallel的使用 1、Parallel.Invoke2、Parallel.For3、Parallel.Foreach二、 Parallel中途退出循环和异常处理 1、当我们使用到Parallel#xff0c;必然是处理一些比较耗时的操作#xff0c;当然也很耗CPU和内存#xff0c;如果我们中途向停止#xff0c;怎么办呢必然是处理一些比较耗时的操作当然也很耗CPU和内存如果我们中途向停止怎么办呢2、异常处理 随着多核时代的到来并行开发越来越展示出它的强大威力使用并行程序充分的利用系统资源提高程序的性能。在.net 4.0中微软给我们提供了一个新的命名空间System.Threading.Tasks。这里面有很多关于并行开发的东西今天第一篇就介绍下最基础最简单的——认识和使用Parallel。 一、 Parallel的使用 在Parallel下面有三个常用的方法invoke,For和ForEach。 1、Parallel.Invoke 这是最简单最简洁的将串行的代码并行化。 在这里先讲一个知识点就是StopWatch的使用最近有一些人说找不到StopWatchStopWatch到底是什么东西今天就来说明一下。 StopWatch在System.Diagnostics命名控件要使用它就要先引用这个命名空间。 其使用方法如下 1 2 3 4 5 6 7 8 9 10 11 var stopWatch new StopWatch();   //创建一个Stopwatch实例 stopWatch.Start();   //开始计时 stopWatch.Stop();   //停止计时 stopWatch.Reset();  //重置StopWatch stopWatch.Restart(); //重新启动被停止的StopWatch stopWatch.ElapsedMilliseconds //获取stopWatch从开始到现在的时间差单位是毫秒 本次用到的就这么多知识点想了解更多关于StopWatch的去百度一下吧网上有很多资料。 下面进入整体开始介绍Parallel.Invoke方法废话不多说了首先新建一个控制台程序添加一个类代码如下 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 26 27 28 29 public class ParallelDemo  {  private Stopwatch stopWatch new Stopwatch();  public void Run1()  {  Thread.Sleep(2000);  Console.WriteLine(Task 1 is cost 2 sec);  }  public void Run2()  {  Thread.Sleep(3000);  Console.WriteLine(Task 2 is cost 3 sec);  }  public void ParallelInvokeMethod()  {  stopWatch.Start();  Parallel.Invoke(Run1, Run2);  stopWatch.Stop();  Console.WriteLine(Parallel run   stopWatch.ElapsedMilliseconds ms.);     stopWatch.Restart();  Run1();  Run2();  stopWatch.Stop();  Console.WriteLine(Normal run   stopWatch.ElapsedMilliseconds ms.);  } 代码很简单首先新加一个类在类中写了两个方法Run1和Run2分别等待一定时间输出一条信息然后写了一个测试方法ParallelInvokeMethod分别用两种方法调用Run1和Run2然后在main方法中调用下面来看一下运行时间如何 大家应该能够猜到正常调用的话应该是5秒多而Parallel.Invoke方法调用用了只有3秒也就是耗时最长的那个方法可以看出方法是并行执行的执行效率提高了很多。 2、Parallel.For 这个方法和For循环的功能相似下面就在类中添加一个方法来测试一下吧。代码如下 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 26 27 28 public void ParallelForMethod()  {  stopWatch.Start();  for (int i 0; i 10000; i)  {  for (int j 0; j 60000; j)  {   int sum 0;   sum i;  }  }  stopWatch.Stop();  Console.WriteLine(NormalFor run   stopWatch.ElapsedMilliseconds ms.);  stopWatch.Reset();  stopWatch.Start();  Parallel.For(0, 10000, item  {  for (int j 0; j 60000; j)  {   int sum 0;   sum item;  }  });  stopWatch.Stop();  Console.WriteLine(ParallelFor run   stopWatch.ElapsedMilliseconds ms.);     } 写了两个循环做了一些没有意义的事情目的主要是为了消耗CPU时间同理在main方法中调用运行结果如下图 可以看到Parallel.For所用的时间比单纯的for快了1秒多可见提升的性能是非常可观的。那么是不是Parallel.For在任何时候都比for要快呢答案当然是“不是”要不然微软还留着for干嘛 下面修改一下代码添加一个全局变量num代码如下 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 26 27 28 29 30 31 32 33 34 35 36 37 public void ParallelForMethod()  {  var obj new Object();  long num 0;  ConcurrentBaglong bag new ConcurrentBaglong();  stopWatch.Start();  for (int i 0; i 10000; i)  {  for (int j 0; j 60000; j)  {   //int sum 0;   //sum item;   num;  }  }  stopWatch.Stop();  Console.WriteLine(NormalFor run   stopWatch.ElapsedMilliseconds ms.);  stopWatch.Reset();  stopWatch.Start();  Parallel.For(0, 10000, item  {  for (int j 0; j 60000; j)  {   //int sum 0;   //sum item;   lock (obj)   {   num;   }  }  });  stopWatch.Stop();  Console.WriteLine(ParallelFor run   stopWatch.ElapsedMilliseconds ms.);     } Parallel.For由于是并行运行的所以会同时访问全局变量num,为了得到正确的结果要使用lock,此时来看看运行结果 是不是大吃一惊啊Parallel.For竟然用了15秒多而for跟之前的差不多。这主要是由于并行同时访问全局变量会出现资源争夺大多数时间消耗在了资源等待上面。 一直说并行那么从哪里可以看出来Parallel.For是并行执行的呢下面来写个测试代码 1 2 3 4 Parallel.For(0, 100, i  {  Console.Write(i \t);  }); 从0输出到99运行后会发现输出的顺序不对用for顺序肯定是对的并行同时执行所以会出现输出顺序不同的情况。 3、Parallel.Foreach 这个方法跟Foreach方法很相似想具体了解的可以百度些资料看看这里就不多说了下面给出其使用方法 1 2 3 4 5 6 Listint list new Listint();  list.Add(0);  Parallel.ForEach(list, item  {  DoWork(item);  }); 二、 Parallel中途退出循环和异常处理 1、当我们使用到Parallel必然是处理一些比较耗时的操作当然也很耗CPU和内存如果我们中途向停止怎么办呢 在串行代码中我们break一下就搞定了但是并行就不是这么简单了不过没关系在并行循环的委托参数中提供了一个ParallelLoopState 该实例提供了Break和Stop方法来帮我们实现。 Break: 当然这个是通知并行计算尽快的退出循环比如并行计算正在迭代100那么break后程序还会迭代所有小于100的。 Stop这个就不一样了比如正在迭代100突然遇到stop那它啥也不管了直接退出。 下面来写一段代码测试一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public void ParallelBreak()  {  ConcurrentBagint bag new ConcurrentBagint();  stopWatch.Start();  Parallel.For(0, 1000, (i, state)  {  if (bag.Count 300)  {   state.Stop();   return;  }  bag.Add(i);  });  stopWatch.Stop();  Console.WriteLine(Bag count is   bag.Count ,   stopWatch.ElapsedMilliseconds);  } 这里使用的是Stop当数量达到300个时会立刻停止可以看到结果Bag count is 300如果用break,可能结果是300多个或者300个大家可以测试一下。 2、异常处理 首先任务是并行计算的处理过程中可能会产生n多的异常那么如何来获取到这些异常呢普通的Exception并不能获取到异常然而为并行诞生的AggregateExcepation就可以获取到一组异常。 这里我们修改Parallel.Invoke的代码修改后代码如下 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 public class ParallelDemo  {  private Stopwatch stopWatch new Stopwatch();  public void Run1()  {  Thread.Sleep(2000);  Console.WriteLine(Task 1 is cost 2 sec);  throw new Exception(Exception in task 1);  }  public void Run2()  {  Thread.Sleep(3000);  Console.WriteLine(Task 2 is cost 3 sec);  throw new Exception(Exception in task 2);  }  public void ParallelInvokeMethod()  {  stopWatch.Start();  try  {  Parallel.Invoke(Run1, Run2);  }  catch (AggregateException aex)  {  foreach (var ex in aex.InnerExceptions)  {   Console.WriteLine(ex.Message);  }  }  stopWatch.Stop();  Console.WriteLine(Parallel run   stopWatch.ElapsedMilliseconds ms.);  stopWatch.Reset();  stopWatch.Start();  try  {  Run1();  Run2();  }  catch(Exception ex)  {  Console.WriteLine(ex.Message);  }  stopWatch.Stop();  Console.WriteLine(Normal run   stopWatch.ElapsedMilliseconds ms.);  } 顺序调用方法我把异常处理写一起了这样只能捕获Run1的异常信息大家可以分开写。捕获AggregateException 异常后用foreach循环遍历输出异常信息可以看到两个异常信息都显示了。 点击这里下载源码 以上就是c# 并行和多线程编程——认识Parallel的详细内容更多关于c# 并行和多线程编程的资料请关注脚本之家其它相关文章
http://www.sczhlp.com/news/197287/

相关文章:

  • 官方网站建设哪儿有wordpress打包app上架
  • c2c网站内容及功能开始wordpress 获取page
  • 2025-10-15 2个元素a和b,a的层级(z-index)比b的高,a为固定定位(fixed),b为粘性定位(sticky),当二者有部分重叠时,b会遮挡a的原因以及解决方法
  • MATLAB含风电场RX模型的系统潮流计算
  • 网站建设软件用乐云践新黄陂网站建设
  • (Adobe Photoshop 2025 )PS2025最新激活版下载安装教程!最新PS 2025安装包免费版下载与保姆级安装教程
  • centos 7.9安装zabbix proxy 代理
  • 太原网站建设搭建wordpress需要先安装数据库
  • 建设网站目的上海住房城乡建设部网站
  • 东莞市建设工程监督网站开发大型网站的流程
  • 个人购物网站建设织梦网站如何备份教程
  • 重庆建网站一般多少钱wordpress 微信主体
  • 成都市住房和城乡建设厅官方网站图片设计网站免费
  • 做电影网站如何规避版权搭建网站 网页
  • 重庆江津网站设计公司哪家好如何申请自己的个人网站
  • 百度站长平台h5网站弥勒网站开发
  • 厦门海绵城市建设官方网站网络推广公司有哪些
  • 怎么用vs做网站电商入门教学
  • 网站建设属于哪种公司淘宝网站建设那么便宜
  • 网站跳出率怎么算电脑软件下载平台哪个好
  • 城阳网站建设建筑工程网官网招聘资料员
  • 广东网页制作与网站建设青岛网络营销推广
  • 做个网站大约多少钱营销类wordpress主题
  • 工业和信息化部发短信是什么意思搜索引擎优化培训班
  • 网站建设销售问答网站美工费用
  • 网站后台编辑不了二手房网站开发
  • 苏州知名网站制作网页制作论文3000字
  • 个人能进行网站开发网站建设需要了解哪些方面
  • 做黑彩网站赚钱吗广州商务网站建设
  • 网站退出率全国旅游卡app