zoukankan      html  css  js  c++  java
  • 并行活动

    今天在工作中用到了并行,于是就总结了一下关于并行的方法使用,也为自己做个备忘。

    命名空间:System.Threading.Tasks;

    重要的类:Parallel;

    重要的方法:3个;[其他都是重载]

    一.Invoke方法:任务已生成;

    用法一:

     注意:1.都是指单独的任务或活动;【不要相互调用】

            2.需要事先生成这些任务或活动,同时并发执行这些任务;

            3.任务或活动的方法是无参无返回值的;

     1   class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             System.Threading.Tasks.Parallel.Invoke(Program.Fly,Program.Run,Program.Wolk);
     6             Console.ReadKey();
     7         }
     8         static void Fly()
     9         {
    10             Console.WriteLine("小鸟在飞");
    11         }
    12         static void Run() 
    13         {
    14             Console.WriteLine("猪在跑");
    15         }
    16         static void Wolk() 
    17         {
    18             Console.WriteLine("你在走路");
    19         }
    20     }
    View Code

    用法二:

     1  class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5            
     6             Action[] action = { Program.Fly, Program.Run, Program.Wolk };
     7             System.Threading.Tasks.Parallel.Invoke(action);
     8             Console.ReadKey();
     9         }
    10         static void Fly()
    11         {
    12             Console.WriteLine("小鸟在飞");
    13         }
    14         static void Run() 
    15         {
    16             Console.WriteLine("猪在跑");
    17         }
    18         static void Wolk() 
    19         {
    20             Console.WriteLine("你在走路");
    21         }
    22     }
    View Code

     二.for方法:根据数据源生成任务或活动

     1    class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5   System.Threading.Tasks.Parallel.For(1,10, Swim);
     6 
     7             Console.ReadKey();
     8         }
     9     static void Swim(int n)
    10         {
    11             Console.WriteLine("第{0}个活动执行",n);
    12         }
    13 }
    View Code

    三.foreach方法:根据数据源生成任务或活动

      

     1  class Program
     2     {
     3         static void Main(string[] args)
     4         { 
     5            List<Animal> animals = new List<Animal>();
     6             for (int i = 0; i < 2; i++)
     7             {
     8                 Animal animal = new Animal();
     9                 animal.Name = "小黑" + i;
    10                 animal.Age = i;
    11                 animals.Add(animal);
    12             }
    13 
    14             System.Threading.Tasks.Parallel.ForEach<Animal>(animals, Swim);
    15 
    16             Console.ReadKey();
    17         }
    18    static void Swim(Animal animal)
    19         {
    20 
    21             Console.WriteLine("{0}在游泳,它{1}岁了。", animal.Name, animal.Age);
    22         }
    23   }
    24 public class Animal
    25 {
    26     public string Name { get; set; }
    27     public int Age { get; set; }
    28 
    29 }
    View Code
  • 相关阅读:
    jenkins api
    打码兔官网 验证码识别 远程答题服务 代答平台 验证码识别软件下载
    WeUI首页、文档和下载
    CMDB, 配置管理数据库, ITIL
    OpenResty Con 2015
    Ngx_lua 最佳技术实践 | UPYUN技术现场
    兔大侠整理的MySQL-Python(MySQLdb)封装类
    58同城沈剑:好的架构源于不停地衍变,而非设计-CSDN.NET
    Lua包管理工具Luarocks详解
    zz
  • 原文地址:https://www.cnblogs.com/zlp520/p/3885385.html
Copyright © 2011-2022 走看看