delphi Parallel 之 TTask 初试
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 初试的更多相关文章
- delphi 线程 TTask
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Threading.TTask http://docwiki.embarcader ...
- [转载]:Delphi xe7并行编程快速入门
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- 关于delphi XE7中的动态数组和并行编程(第一部分)
本文引自:http://www.danieleteti.it/category/embarcadero/delphi-xe7-embarcadero/ 并行编程库是delphi XE7中引进的最受期待 ...
- 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:// ...
- Delphi 和 C++Builder 2014年及以后技术路线图
RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...
- DELPHI XE7 新的并行库
DELPHI XE7 的新功能列表里面增加了并行库System.Threading, System.SyncObjs. 为什么要增加新的并行库? 还是为了跨平台.以前要并行编程只能从TThread类继 ...
- Delphi xe7并行编程快速入门(三篇)
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- Delphi xe7并行编程快速入门(转)
源:http://blog.csdn.net/henreash/article/details/41315183 现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优 ...
- Delphi+GDI
源:Delphi 初试GDI+学习笔记 Delphi 深入GDI+学习笔记
随机推荐
- java proxy 转包
package org.rx.socks.proxy; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; ...
- nc/netcat命令
nc/netcat命令 语法 nc/netcat(选项)(参数) 选项 -g<网关>:设置路由器跃程通信网关,最多设置8个: -G<指向器数目>:设置来源路由指向器,其数值为4 ...
- vgcreate语法
vgcreate 用于创建LVM卷组 补充说明 vgcreate命令 用于创建LVM卷组.卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节.在卷组上创建逻辑卷时不用考虑 ...
- 集群web-ui
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述: 1.hdfs的集群端口号默认50070 NameNode http://localhost1:50070(默认端口号po ...
- 封装Thread的两种方法 via C++ in Linux
方法一: 代理线程函数(proxyThreadFunc)作为类的静态成员函数, 回调函数指针作为类的私有成员变量 方法二: 代理线程函数(proxyThreadFunc)作为全局函数, 回调函数指针 ...
- time模块(时间)
time.time() #返回当前时间的时间戳 time.sleep() #CPU休息时间 print(time.clock()) #计算CPU执行时间 time.gmtime() #结构化时间 UT ...
- StringBuilder
在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空 ...
- 关于indexof和substring经常记不住的点
indexof 找到的字符位置是 字符串从0位开始算起的. lastIndexOf也一样,http://localhost:8080/aaa,的lastIndexOf("/")是2 ...
- 《xxx系统》可用性与易用性功能增加
可用性:1. 用户删除的表单信息还可以进行恢复: 2. 用户可根据某一字段的某部分文字进行模糊查询. 3. 任何界面响应时间不超过5秒. 易用性:1. 审核人员进入系统后,提醒审核人进行密码修改 2. ...
- seg代码配置的踩坑记录
01. SEGMENTATION FAULT 正在配置OCNET的代码,在自己的本地运行没有任何问题,但是在服务器上一直报错:SEGMENTATION FAULT 这属于很概括的报错,无法直接看明白到 ...