System.Threading.TTask.Future
Delphi
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> の呼び出し用のスレッド処理リソースは、デフォルト プールではなく、ここから取得されます。スレッド処理リソースを制限する必要がある場合に使用され、スレッド処理リソースを他の目的に使用できるようにします。