不知什么时候,也许是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(其中一个线程执行完毕)

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

Delphi并行库System.Threading 之ITask 1的更多相关文章

  1. DELPHI XE7 新的并行库

    DELPHI XE7 的新功能列表里面增加了并行库System.Threading, System.SyncObjs. 为什么要增加新的并行库? 还是为了跨平台.以前要并行编程只能从TThread类继 ...

  2. 一、并行编程 - 数据并行 System.Threading.Tasks.Parallel 类

    一.并行概念 1.并行编程 在.NET 4中的并行编程是依赖Task Parallel Library(后面简称为TPL) 实现的.在TPL中,最基本的执行单元是task(中文可以理解为"任 ...

  3. Delphi XE7中新并行库

    Delphi XE7中添加了新的并行库,和.NET的Task和Parellel相似度99%. 详细内容能够看以下的文章: http://www.delphifeeds.com/go/s/119574 ...

  4. C#并行库(TaskParallelLibrary)用法小结

    今天有空,总结一下.NET 4.5并行库(TaskParallelLibrary)用法. 也许C和C++的程序员刚刚开始写C#还习惯于new Thread来新建一个线程,但新建线程需要内存和CPU上下 ...

  5. using System.Threading.Tasks;

    using System.Threading.Tasks; .Net并行库介绍——Task1

  6. C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)

    学习书籍: <C#本质论> 1--C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是 ...

  7. [C#]『PLINQ』任务并行库使用小计

    并行 LINQ (PLINQ) 是 LINQ to Objects 的并行实现. PLINQ 实现完整的 LINQ 标准查询运算符集作为 T:System.Linq 命名空间的扩展方法,并具有用于并行 ...

  8. 数据流(任务并行库 TPL)

    TPL 数据流库向具有高吞吐量和低滞后时间的占用大量 CPU 和 I/O 操作的应用程序的并行化和消息传递提供了基础. 它还能显式控制缓存数据的方式以及在系统中移动的方式. 为了更好地了解数据流编程模 ...

  9. .Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow

    在学习的过程中,看一些一线的技术文档很吃力,而且考虑到国内那些技术牛人英语都不差的,要向他们看齐,所以每天下班都在疯狂地背单词,博客有些日子没有更新了,见谅见谅 什么是TPL? Task Parall ...

随机推荐

  1. ubuntu14.04server版安装redis

    此博客记录首次在ubuntu14.04上安装redis过程. 以下采用两种方式进行安装 方法一:进入redis的官网下载(地址:https://redis.io/download)目前版本为4.0.9 ...

  2. Asp.net让某一页设置成gb2312或utf-8的方法

    有些需求,一定要用到utf-8格式,在web.config里面设置<globalization             requestEncoding="utf-8"     ...

  3. Python学习---匿名函数和闭包的学习

    1.1. 匿名函数 匿名函数的命名规则:  用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b). 因为lamdba在创建时不需要命名,所 ...

  4. Linux统计文件个数或是代码行数

    统计指定后缀名的文件总个数命令: find . -name *.cpp | wc -l 统计一个目录下代码总行数以及单个文件行数: find . -name *.h | xargs wc -l lin ...

  5. 网络分析 ANP

    在许多实际问题中,各层次内部元素往往是依赖的. 低层元素对高层元素亦有支配作用,即存在反馈. 此时系统的结构更类似于网络结构.网络分析法正是适应这种需要,由AHP延伸发展得到的系统决策方法.   AN ...

  6. ZooKeeper介绍与环境搭建

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  7. JDBC(6)事务处理&批量处理

    事务处理就是当执行多个SQL指令,因某个指令有误,则取消执行所有的命令 它的作用是保证各项的完整性和一致性 JDBC的数据操作时 commit():提交事务 rollback():回退事务 绝位于ja ...

  8. ethereumjs/ethereumjs-account-1-简介和API

    https://github.com/ethereumjs/ethereumjs-account Encoding, decoding and validation of Ethereum's Acc ...

  9. 持续集成之Jenkins+Gitlab实现持续集成

    项目使用git+jenkins实现持续集成 开始构建  General  源码管理 我们安装的是Git插件,还可以安装svn插件  我们将git路径存在这里还需要权限认证,否则会出现error  我们 ...

  10. Java中线程同步的理解

    我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可能和其他线程共享一些资源, ...