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
  • 相关阅读:
    Apache Hadoop 3.0.0 Release Notes
    控制你的数据,你才能得到有效且高效的数据结果
    读写分离与主从同步数据一致性
    代理ip proxy
    maximize_window fullscreen_window minimize_window
    HTTP 代理原理及实现
    browser user agent
    res_d_l =[{'contents':d.contents,'href':d.attrs['href']} for d in rd] 泛型
    tmp
    Connection reset by peer
  • 原文地址:https://www.cnblogs.com/zlp520/p/3885385.html
Copyright © 2011-2022 走看看