Delphi D10.X 并行库PPL编程之 Futures

2022-11-16 12:43:27 作者:admin

本文整理自网络,侵删。

 Delphi D10.X 并行库PPL编程系列之 Futures
delphi中的RTL(运行库)提供了并行编程库(PPL --Parallel Programming Library) ,让您的应用程序可以在跨平台应用中有效的使用多个CPU并行运行任务的能力。Futures 让流程专注于其他任务,然后在所需的位置获得该流程的结果。IFuture允许您为运行的代码块建立优先级,并在需要时仍返回结果。
Futures 说明
Future接受一个能够在并行线程中运行的函数,并返回一个接口,该接口用于在程序中所需位置获取结果。
Future方法将IFuture的实例返回到类型T定义的变量中。类型参数T表示要在并行线程中运行的函数的返回类型。
以下是不同的重载方法:
class function Future<T>(Sender: TObject; Event: TFunctionEvent<T>): IFuture<T>; overload; static; inline;class function Future<T>(Sender: TObject; Event: TFunctionEvent<T>; APool: TThreadPool): IFuture<T>; overload; static; inline;class function Future<T>(const Func: TFunc<T>): IFuture<T>; overload; static; inline;class function Future<T>(const Func: TFunc<T>; APool: TThreadPool): IFuture<T>; overload; static; inline;
Futures演示
使用Futures时,将会在需要时获得此值,如果尚未计算,它将阻塞直到完成。
演示中使用到的控件

只需要两个按钮控件,其中一个用于启动计算,另一个用于获取计算执行结果。
添加使用单元
首先,我们需要引用PPL库:
uses  System.Threading; // 需要引用PPL库
设置一个变量
  public    { Public declarations }    FutureString: IFuture<string>;
分别为两个按钮增加处理事件
{=======================  Future 演示  ========================================}procedure TForm5.Button4Click(Sender: TObject);begin  FutureString:= TTask.Future<string>(    function:string    begin      {暂停一段时间,模拟需要计算的处理时间 }      Sleep(3000);      Result:='Hello ' + Random(42).ToString;  end);end;
procedure TForm5.Button5Click(Sender: TObject);begin  Button5.Text := FutureString.Value;end;{=======================  Future 演示  ========================================}
演示效果――――――――――――――――
点击启动按钮后,在3秒内点击获取结果后,会阻塞直到我们程序里的3秒结束后,返回一个42以内的随机数。
原文链接:https://blog.csdn.net/tanqth/article/details/104554661

相关阅读 >>

Delphi中判断tcp端口是否被占用

Delphi汉字与多字节编码的转换

Delphi 将被其他窗体遮住的窗体弹到最前面

Delphi 如何将bitmap位图与base64字符串相互转换

Delphi 共享内存的应用

Delphi idhttp中设置非标准头信息和读写cookie

Delphi 提升进程权限

Delphi 查找某目录下的特定文件

Delphi xe5下安卓开发技巧

Delphi 屏幕截图完美解决方案

更多相关阅读请进入《Delphi》频道 >>



在线咨询 拨打电话