本文主要是介绍Delphi D10.X 并行库PPL编程之 Futures,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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库:
usesSystem.Threading; // 需要引用PPL库
设置一个变量
public{ Public declarations }FutureString: IFuture<string>;
分别为两个按钮增加处理事件
{======================= Future 演示 ========================================}
procedure TForm5.Button4Click(Sender: TObject);
beginFutureString:= TTask.Future<string>(function:stringbegin{暂停一段时间,模拟需要计算的处理时间 }Sleep(3000);Result:='Hello ' + Random(42).ToString;end);
end;procedure TForm5.Button5Click(Sender: TObject);
beginButton5.Text := FutureString.Value;
end;
{======================= Future 演示 ========================================}
演示效果
点击启动按钮后,在3秒内点击获取结果后,会阻塞直到我们程序里的3秒结束后,返回一个42以内的随机数。
具体使用请参阅
使用并行编程库
并行库PPL编程之 TTask
并行库PPL编程之 TParallel.For
演示Demo
可下载本系列文章对应的演示程序,含代码。使用D10.3.2编辑。
Delphi D10.X 使用并行编程库使用演示
欢迎光顾本人小店:(https://shop63778938.taobao.com/)
小店也提供delphi方面其他技术支持、定制开发。
现在就进店看看
以上信息对您有用的话请点赞收藏,就下面这行
这篇关于Delphi D10.X 并行库PPL编程之 Futures的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!