你的位置:首页 > ASP.net教程

[ASP.net教程]Parallel与PLINQ简单示例


    Parallel是对Task用法的简化,含有Parallel.For、Parallel.ForEach、Parallel.Invoke三个静态方法。PLINQ是并行版本的LINQ。下面给出Parallel和PLINQ的简单示例及注意事项。

    一、简单示例

    1、Parallel.For

      int[] nums = new[] { 1, 2, 3, 4 };      Parallel.For(0, nums.Length, i =>      {        Console.WriteLine("下标:{0},值:{1}", i, nums[i]);      });

    2、Parallel.ForEach

      var ltModel = new List<UserInfo>();      for (int i = 1; i <= 5; i++)      {        var item = new UserInfo { No = i, Name = "名字" + i };        ltModel.Add(item);      }      Parallel.ForEach(ltModel, item =>      {        Console.WriteLine("No:{0}, Name:{1}", item.No, item.Name);      });

    3、Parallel.Invoke

      var ltTask = new List<Action>();      for (int i = 1; i <= 5; i++)      {        int j = i;        ltTask.Add(() =>        {          Console.WriteLine("启动任务" + j);        });      }      Parallel.Invoke(ltTask.ToArray());

    4、PLINQ

      var ltNum = new List<int>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};      var resultNum = (from n in ltNum.AsParallel() where n>=3 orderby n descending select n).ToArray();      foreach (var item in resultNum)      {        Console.WriteLine("Num: {0}", item);        }

    二、注意事项

    如果对集合的逻辑顺序没有要求,可以用Parallel和PLINQ,否则不能使用。