デルファイD10.X並列プログラミングライブラリPPLシリーズフューチャーズ
RTLでのデルファイ(ランタイム)は、アプリケーションが効果的にクロスプラットフォームアプリケーションにおける並列タスクで複数のCPUランニングの電源を使用することができるように、並列プログラミングライブラリ(ライブラリのプログラミングPPL --parallel)を提供します。
先物は、プロセスが他のタスクに焦点を当て、その後、所望の位置に、このプロセスの結果を得ることができます。IFutureは、実行するコードのブロックの優先順位を確立することを可能にし、必要なときに、まだ結果を返します。
先物説明
将来は、並列スレッドで動作することができる機能を受け入れ、そしてインターフェイスを返す、結果を得るために使用されるインターフェイスは、プログラム内の位置を希望しました。
将来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;
先物のデモ
先物を使用する場合、まだ計算されていない場合は、必要に応じて、それが完了するまでブロックされる場合、この値を受け取ります。
プレゼンテーションを制御するために使用します
2つだけのコントロールボタンは、計算を開始するための1つが、別の計算結果を得るために使用されます。
付加部
まず、私たちは、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を返します。
特定の使用を参照してください
並列プログラミングライブラリ使用して
並列ライブラリPPLプログラミングTTask
並列プログラミングライブラリPPLのTParallel.Forを
演示Demo
コードに対応するこのシリーズのダウンロードデモ。D10.3.2エディタを使用してください。
デルファイD10.Xは、並列プログラミングライブラリデモを使用しました
私のお店を訪問する歓迎:(https://shop63778938.taobao.com/)
ショップも他の態様は、技術サポート、カスタム開発をDELPHI提供しています。
上記の情報は、あなたにとって有用な、次の行に、賞賛のコレクションを喜ば