unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
System.Generics.Collections; type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure TaskProc(Sender: TObject);
function FutureEvent(Sender: TObject): string;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} uses
System.Threading, System.SyncObjs, System.Diagnostics; procedure TForm1.Button1Click(Sender: TObject);
var
ATask: ITask;
begin
ATask := TTask.Run(Self, Form1.TaskProc);
ATask.Start;
//阻塞至线程结束
ATask.Wait;
end; procedure TForm1.Button2Click(Sender: TObject);
var
ATask: IFuture<string>;
begin
ATask := TTask.Future<string>(function: string
begin
TThread.Sleep();
Result := DateTimeToStr(Now);
end);
//阻塞至线程结束
Caption := ATask.Value;
end; procedure TForm1.Button3Click(Sender: TObject);
var
ATask: IFuture<string>;
begin
ATask := TTask.Future<string>(Self, FutureEvent);
//阻塞至线程结束
Caption := ATask.Value;
end; procedure TForm1.Button4Click(Sender: TObject);
var
TaskArray: TArray<ITask>;
I: Integer;
begin
SetLength(TaskArray, );
for I := Low(TaskArray) to High(TaskArray) do
TaskArray[I] := TTask.Run(procedure
begin
TThread.Sleep();
end);
//阻塞至线程结束
TTask.WaitForAll(TaskArray);
ShowMessage('ok');
end; procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := True;
end; function TForm1.FutureEvent(Sender: TObject): string;
begin
Result := DateTimeToStr(Now);
end; procedure TForm1.TaskProc(Sender: TObject);
var
I: Integer;
begin
TThread.Sleep();
for I := to do
TThread.Queue(nil, procedure
begin
Memo1.Lines.Add(Sender.ClassName);
end);
end; end.

delphi Parallel 之 TTask 初试的更多相关文章

  1. delphi 线程 TTask

    http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Threading.TTask http://docwiki.embarcader ...

  2. [转载]:Delphi xe7并行编程快速入门

    现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...

  3. 关于delphi XE7中的动态数组和并行编程(第一部分)

    本文引自:http://www.danieleteti.it/category/embarcadero/delphi-xe7-embarcadero/ 并行编程库是delphi XE7中引进的最受期待 ...

  4. TAxThread - Inter thread message based communication - Delphi

    http://www.cybletter.com/index.php?id=3 http://www.cybletter.com/index.php?id=30 Source Code http:// ...

  5. Delphi 和 C++Builder 2014年及以后技术路线图

    RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...

  6. DELPHI XE7 新的并行库

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

  7. Delphi xe7并行编程快速入门(三篇)

    现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...

  8. Delphi xe7并行编程快速入门(转)

    源:http://blog.csdn.net/henreash/article/details/41315183 现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优 ...

  9. Delphi+GDI

    源:Delphi 初试GDI+学习笔记 Delphi 深入GDI+学习笔记

随机推荐

  1. json格式字符串用Uncaught SyntaxError: Unexpected token ' Uncaught SyntaxError: Unexpected number

    Unexpected number(index)的错误用的json字符串如 var jsonStr = "{1:'北京note备注信息',2:'上海note备注信息',3:'广东note备注 ...

  2. js的观察者模式

    观察者模式(发布-订阅模式):它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体 ...

  3. 前端学习roadmap

  4. pytorch 读数据接口 制作数据集 data.dataset

    [吐槽] 啊,代码,你这个大猪蹄子 自己写了cifar10的数据接口,跟官方接口load的数据一样, 沾沾自喜,以为自己会写数据接口了 几天之后,突然想,自己的代码为啥有点慢呢,这数据集不大啊 用了官 ...

  5. vxlan基础

    1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有 ...

  6. 看到Console.WriteLine($"string")写法,一时间不理解$的用途

    参了网上资料,原来它是C# 6.0的语法糖. C# 6.0 新加上的功能:   Null-Conditional Operator 大概就是,简洁代码量,缩短一些关于为null的判断~ 旧写法: pu ...

  7. pycharm介绍

      PyCharm是一种Python IDE(集成开发软件),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具. 1.1 PyCharm主界面 PyCharm包含4个主要区分,分别为 ...

  8. Java 并发开发:Lock 框架详解

    摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多 ...

  9. QWaiteCondition思考4

    引用 http://blog.csdn.net/flyoxs/article/details/54617342 简单用法 QWaitCondition 用于多线程的同步,一个线程调用QWaitCond ...

  10. [亲身实践]linux命令行下配置网路

    1.在命令行下输入setup, 2.之后出现下图,选择网络配置 4.配置IP地址,子网掩码,DNS 5.保存之后回到命令行模式下,输入service network restart,至此网络配置完成