文章教程

10.4并行运算

8/31/2020 9:56:04 PM 人评论 次浏览

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第10章\并行运算.mp4

并行运算是相对于串行运算来说的。并行运算可分为时间上的并行运算和空间上的并行运算。时间上的并行运算是指流水线技术,而空间上的并行运算则是指用多个处理器并发地执行计算。

1.For循环的并行运算

实例053 演示For循环的并行运算

源码路径 光盘\daima\10\CSharp\Parallel\  视频路径 光盘\视频\实例\第10章\053

编写主实现文件ParallelFor.aspx.cs,其主要代码如下。

  public partial class ParallelFor : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      Normal();
      ParallelForDemo();
    }
    private void Normal()
    {
      DateTime dt = DateTime.Now;
      for (int i = 0; i < 20; i++)
      {
        GetData(i);
      }
      Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
      Response.Write("<br />");
      Response.Write("<br />");
    }
    private void ParallelForDemo()
    {
      DateTime dt = DateTime.Now;
      // System.Threading.Tasks.Parallel.For - for 循环的并行运算
      System.Threading.Tasks.Parallel.For(0, 20, (i) => { GetData(i); });
      Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
      Response.Write("<br />");
    }
    private int GetData(int i)
    {
      System.Threading.Thread.Sleep(100);
      Response.Write(i.ToString());
      Response.Write("<br />");
      return i;
    }
  }
}
范例105:倒计时秒表
源码路径:光盘\演练范例\105视频路径:光盘\演练范例\105范例106:实现阴影效果的模态窗口
源码路径:光盘\演练范例\106视频路径:光盘\演练范例\106\

2.For Each循环的并行运算

实例054 演示ForEach的并行运算

源码路径 光盘\daima\10\CSharp\Parallel\  视频路径 光盘\视频\实例\第10章\054

编写主实现文件ParallelForEach.aspx.cs,其主要代码如下。

  public partial class ParallelForEach : System.Web.UI.Page
  {
    private List<int> _data = new List<int>();
    protected void Page_Load(object sender, EventArgs e)
    {
      InitData();
      Normal();
      ParallelForEachDemo();
    }
    private void InitData()
    {
      _data.Clear();
      for (int i = 0; i < 20; i++)
      {
        _data.Add(i);
      }
    }
    private void Normal()
    {
      DateTime dt = DateTime.Now;
      for (int i = 0; i < 20; i++)
      {
        GetData(i);
      }
      Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
      Response.Write("<br />");
      Response.Write("<br />");
    }
    private void ParallelForEachDemo()
    {
      DateTime dt = DateTime.Now;
      // System.Threading.Tasks.Parallel.ForEach - foreach 循环的并行运算
      System.Threading.Tasks.Parallel.ForEach(_data, (index) => { GetData(index); });
      Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
      Response.Write("<br />");
    }
    private int GetData(int i)
    {
      System.Threading.Thread.Sleep(100);
      Response.Write(i.ToString());
      Response.Write("<br />");
      return i;
    }
  }
范例107:用Ajax Calendar实现日期选择
源码路径:光盘\演练范例\107视频路径:光盘\演练范例\107范例108:在商城展示页面中使用Ajax技术
源码路径:光盘\演练范例\108视频路径:光盘\演练范例\108\

教程类别