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. Unity3D Button组管理(给按钮的onclick事件“传递参数”)

    using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI; // ...

  2. python命令随记

    1. pip版本需要升级命令: python -m pip install --upgrade pip 2.查找Django命令 pip show django 3.查看python安装目录 进入Py ...

  3. Linux 系统运行命令 > 查看系统信息

    查看系统运行状态 一 . 查看硬件信息 - 1. cpu信息(可以通过find,whereis,locate查出路径) #cat /proc/cpuinfo 2 . 内存信息:meminfo(可以用c ...

  4. dubbo的常用配置(基于注解)

    之前记录了基于springboot的dubbo入门案例,今天在此基础上记录dubbo官网介绍的常用属性配置,dubbo读取我们配置的属性时是有优先级的,优先级如下图: 如图所示,优先级的属性依次为虚拟 ...

  5. render函数(转)

    https://blog.csdn.net/qq78827534/article/details/80792514

  6. 微信小程序:POST请求data数据请求不到

    最近开始开发小程序,遇到许多小问题,直奔主题. wx.request()是微信封装的ajax请求方法,也是小程序中ajax唯一的一个方法,被放在了API文档的第一个位置,的确使用率是最高的. 但是wx ...

  7. html css样式子元素相对父级元素定位

    废话不多说. 父级元素 样式设置: position:relative; 子元素样式: position: absolute; 这样就可以达到子元素相对父级元素定位了.

  8. PHP判断引入文件是否引入成功

    $included_files = get_included_files(); foreach ($included_files as $filename) { echo "$filenam ...

  9. 1--HTTP基础知识

    1. HTTP工作流程 客户端与服务器要建立连接(TCP) 客户端向服务端发起HTTP请求 服务器做出应答,表示对客户端请求的应答 客户端接受服务器所返回的信息 2. HTTP之URL 协议部分:HT ...

  10. HttpClient 通过代理访问验证服务器

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...