zoukankan      html  css  js  c++  java
  • .NET 4.0 System.Threading.Tasks学习笔记

    由于工作上的需要,学习使用了System.Threading.Tasks的使用,特此笔记下来。
    System.Threading.Tasks的作用:
    Tasks命名空间下的类试图使用任务的概念来解决线程处理的复杂问题。任务(Task)包含一个操作,以及依赖哪个任务的完成才能开始。
    测试用例:
    假设有任务A,B,C,D。其中C依赖A和B的完成,而D依赖A的完成。代码该怎么写呢?
    代码:

    1 TaskFactory factory = new TaskFactory(); 
    2 Task a = factory.StartNew((new TestAction("A", 2)).Do); 
    3 Task b = factory.StartNew((new TestAction("B", 5)).Do); 
    4 Task c = factory.ContinueWhenAll(new Task[] { a, b }, ((preTasks) => (new TestAction("C",1)).Do())); 
    5 Task d = factory.ContinueWhenAll(new Task[] { a }, ((preTasks) => (new TestAction("D",1)).Do()));

    测试任务类:

    复制代码
     1 public class TestAction 
     2 { 
     3 public TestAction(string actionName,int p) 
     4 { 
     5     _actionName = actionName; 
     6     _p = p; 
     7 } 
     8 
     9 private int _p; 
    10 private string _actionName; 
    11 public void Do() 
    12 { 
    13     Console.WriteLine("开始执行" + _actionName); 
    14     Thread.Sleep(new TimeSpan(0, 0, _p)); 
    15     Console.WriteLine("执行完毕" + _actionName); 
    16 } 
    17 } 
    复制代码

    需要注意的是,StartNew方法将立即执行,并不会等待后续的任务加入后才开始,这个是让我刚开始学习时很困惑的。而且StartNew方法不是一个同步方法,这意味着将立即执行后面的语句,因此,我们也就模拟出了任务A和B”同时”执行的现象。

  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/zxtceq/p/7656089.html
Copyright © 2011-2022 走看看