c# c# netnr 发布于:2019年12月12日 更新于:2020年06月08日 553

命名空间

Parallel 所在的命名空间是 System.Threading.Tasks,与线程,任务有关

Paraller.For

Paraller.For() 方法类似于 C#for 循环语句,也是多次执行一个任务
可以并行运行迭代,迭代的顺序没有定义。

using System;
using System.Threading.Tasks;

public class Program
{
  public static void Main()
  {
      ParallelLoopResult result = Parallel.For(0, 10, i =>
      {
          Console.WriteLine("迭代次数:{0},任务ID:{1}", i, Task.CurrentId);
      });

      Console.WriteLine("是否完成:{0}", result.IsCompleted);
  }
}

Parallel.ForEach

浏览器在线运行为单一线程,而通过 Visual Studio 创建的测试项目运行就是多个线程迭代顺序不同

Parallel.ForEach

Paraller.ForEach() 方法遍历实现了 IEnumerable 的集合,其方法类似于 foreach ,但以异步方式遍历,这里也没有确定遍历顺序

using System;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        string[] data = { "str1", "str2", "str3" };
        ParallelLoopResult result = Parallel.ForEach<string>(data, str =>
        {
            Console.WriteLine(str);
        });
        Console.WriteLine("是否完成:{0}", result.IsCompleted);
    }
}

Parallel.ForEach

Parallel.Invoke

Parallel.Invoke() 方法,它提供了任务并行性模式。允许传递一个 Action 委托数组,在其中可以指定应运行的方法

using System;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        Parallel.Invoke(() =>
        {
            Thread.Sleep(100);
            Console.WriteLine("method1");
        }, () =>
        {
            Thread.Sleep(10);
            Console.WriteLine("method2");
        });
    }
}

Parallel.Invoke

作用

前面用 ASP.NET Core 写了单页面应用,要生成静态 HTML 页面,通过反射获取 Action 列表,再发起 HTTP 请求得到页面源码,为了提高生成速度,采用并行请求

项目地址:https://github.com/netnr/scriptservices https://github.com/netnr/np

最常见用于并发请求接口

在线运行

https://try.dot.net

本文参改:https://www.cnblogs.com/lip-blog/p/8018668.html

第 1 页1 个留言
  • 头像
    2019年12月24日回复 1
    block
回复
昵称
邮箱
链接
ˆ