System.Threading.TTask.Future

提供: Appmethod Libraries
移動先: 案内検索

Object Pascal

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;

C++

inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    System::TObject* Sender,
    T __fastcall (__closure *Event)(System::TObject* Sender))
{
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
      Sender, Event, 0, TThreadPool::Default));
  return di->StartFuture();
}
template <typename T>
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    System::TObject* Sender,
    T __fastcall (__closure *Event)(System::TObject* Sender),
    TThreadPool* APool)
{
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
      Sender, Event, 0, APool));
  return di->StartFuture();
}
#else
template <typename T>
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    System::TObject* Sender,
    TFunctionEvent__1<T> Event)
{
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
      Sender, Event, nullptr, TThreadPool::Default));
  return di->StartFuture();
}
template <typename T>
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    System::TObject* Sender,
    TFunctionEvent__1<T> Event,
    TThreadPool* APool)
{
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
      Sender, Event, nullptr, APool));
  return di->StartFuture();
}
#endif
template <typename T>
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    const System::DelphiInterface<System::Sysutils::TFunc__1<T> > Func)
{
  typename TFuture__1<T>::EventType type = 0;
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
    0, type, Func, TThreadPool::Default));
  return di->StartFuture();
}
template <typename T>
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    const System::DelphiInterface<System::Sysutils::TFunc__1<T> > Func,
    TThreadPool* APool)
{
  typename TFuture__1<T>::EventType type = 0;
  System::DelphiInterface<IFuture__1<T> > di(new TFuture__1<T>(
      0, type, Func, APool));
  return di->StartFuture();
}
#ifndef __clang__
#undef override
#endif  // #ifndef __clang__
}  // namespace Threading
}  // namespace System
#endif  // SystemThreading_H
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    System::TObject* Sender,
    T __fastcall (__closure *Event)(System::TObject* Sender),
    TThreadPool* APool)
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    const System::DelphiInterface<System::Sysutils::TFunc__1<T> > Func)
inline System::DelphiInterface<IFuture__1<T> > __fastcall TTask::Future(
    const System::DelphiInterface<System::Sysutils::TFunc__1<T> > Func,
    TThreadPool* APool)

プロパティ

種類 可視性 ソース ユニット
function public
System.Threading.pas
SystemThreading.h
System.Threading TTask


説明

Future は、並列スレッドで実行できる関数を引数として受け取り、プログラムで必要になった時点で結果を取得するのに使用されるインターフェイスを返します。

この関数の戻り値は、Future<T> の結果として返される IFuture<T> のインスタンスを通じて、プログラムで必要になった時点で取得されます。型パラメータ T は、並列スレッドで実行する指定関数の戻り値型を表します。

Future メソッドは、IFuture<T> のインスタンスを返します。

Future の第 1 のオーバーロード メソッドは、下記のパラメータで呼び出します。

パラメータ 意味
Sender Event で使用するデータが格納されているオブジェクト
Event Sender オブジェクトをパラメータとして渡され、値 T のインスタンスを返す関数。

Future の第 2 のオーバーロード メソッドは、下記のパラメータで呼び出します。

パラメータ 意味
Sender Event で使用するデータが格納されているオブジェクト
Event Sender オブジェクトをパラメータとして渡され、値 T のインスタンスを返す関数。
APool 関数の実行に使用されるスレッド プール


Future の第 3 のオーバーロード メソッドは、下記のパラメータで呼び出します。

パラメータ 意味
Func T のインスタンスを返す関数の TFunc 参照。

Future の第 4 のオーバーロード メソッドは、下記のパラメータで呼び出します。

パラメータ 意味
Func T のインスタンスを返す関数の TFunc 参照。
APool 関数の実行に使用されるスレッド プール

Sender パラメータが存在する場合、それが、イベント ハンドラの場合のように、ターゲット関数に渡され、並列スレッドで実行するターゲット関数に Sender オブジェクトのプロパティとメソッドが提供されます。

関数を並列スレッドで実行できるかどうかは、CPU と、実行時にターゲット プラットフォームで使用可能なスレッド処理リソースによって決まります。ThreadPool パラメータが指定される場合、Future<T> の呼び出し用のスレッド処理リソースは、デフォルト プールではなく、ここから取得されます。スレッド処理リソースを制限する必要がある場合に使用され、スレッド処理リソースを他の目的に使用できるようにします。

関連項目