zoukankan      html  css  js  c++  java
  • Delphi并行库System.Threading 之ITask 1

    不知什么时候,也许是XE8,也许是XE8之前 .Delphi里面多了个System.Threading的并行库.

    虽然己经有非常棒的第三方并行库QWorker,但我还是更喜欢官方的东西.

    下面是一段使用System.ThreadingITask的代码

    procedure TForm3.SpeedButton1Click(Sender: TObject);
    
    var
      tasks: array of ITask;
      value: Integer;
      LTask:ITask;
      X,Y:INTEGER;
    begin
      Setlength (tasks ,2);
      value := 0;
      x:=3000;y:=5000;
      tasks[0] := TTask.Create (procedure
                                begin
                                  sleep (3000);
                                  Show(value,x);
                                end);
      tasks[0].Start;
      tasks[1] := TTask.Create (procedure
                                begin
                                  sleep (5000);
                                  Show(value,y);
                                end);
      tasks[1].Start;
    
      TTask.WaitForAll(tasks);
      ShowMessage ('全部执行完毕,值是: ' + value.ToString);
    
    end;
    

     这个东东里面己经使用了一个默认的线程池,并用全部用接口实现.内存自动管理,我感觉非常的棒

    TTask还实现了两个类函数

    class function TTask.WaitForAl(等待所有的线程执行完毕) 和 class function TTask.WaitForAny(其中一个线程执行完毕)

    这是两个非常好用的实现,如此一来,你就可以知道你的作业是在什么时候己经执行完成了.

  • 相关阅读:
    项目经验:如何做到不和产品打起来
    leetcode-剑指30-OK
    leetcode-剑指05-OK
    leetcode-剑指58-OK
    leetcode-剑指28-OK
    leetcode-剑指53-I
    leetcode-剑指18-OK
    leetcode-剑指15-OK
    leetcode-剑指27-OK
    leetcode-剑指17-OK
  • 原文地址:https://www.cnblogs.com/wuxi15/p/5426137.html
Copyright © 2011-2022 走看看