API:System.Threading.TFuture

提供:RAD Studio API Documentation

TFutureSystem.Threading.TTaskSystem.Threading.TAbstractTaskSystem.Threading.TThreadPool.TAbstractWorkerDataSystem.TInterfacedObjectSystem.TObject

Delphi

TFuture<T> = class sealed(TTask, IFuture<T>)

プロパティ

種類 可視性 ソース ユニット
class public System.Threading.pas System.Threading System.Threading

説明

TTask は、並列スレッドで実行できる手続きを管理し表すためのクラスです。 {{#multireplace:System.Threading.TFuture|H21=!|H25=%|H28=(|H29=)|H2A=*|H2B=+|H2F=/|H3C=<|H3D==|H3E=>|H5B=[|H5D=]|H5E=^|H7C=|}} は {{#multireplace:System.Threading.TTask|H21=!|H25=%|H28=(|H29=)|H2A=*|H2B=+|H2F=/|H3C=<|H3D==|H3E=>|H5B=[|H5D=]|H5E=^|H7C=|}} を継承しています。以下の内容はすべて {{#multireplace:System.Threading.TTask|H21=!|H25=%|H28=(|H29=)|H2A=*|H2B=+|H2F=/|H3C=<|H3D==|H3E=>|H5B=[|H5D=]|H5E=^|H7C=|}} を参照しています。

TTask は、並列スレッドで実行できる手続きを管理し表すためのクラスです。

TTask の 1 つのインスタンスは、1 つのタスク(可能であれば実行中の他のタスクと並列で実行される 1 つのスレッド内で行われる作業の単位)を表します。

TTask クラスは、ITask インターフェイスで表されるタスク インスタンスを作成して管理します。このタスク インスタンスは、TTask およぴその下位クラスの型や、ITask インターフェイスとの互換性がある他の型のインスタンスです。

タスクに関連付けられている手続きは、他の同様のタスクや現在実行中の他のスレッドに関連付けられている手続きと並列で実行することができます。どのタスクが並列で動作し、いつ実行されるかは、ターゲット プラットフォームの実行時環境で利用可能なスレッド処理リソースに依存します。

並列実行に適したタスクは、Create コンストラクタを使用して作成できます。コンストラクタに渡されるタスク手続きは、Start メソッドを呼び出した後に実行する準備ができているものとみなされます。

ITaskWaitForAllWaitForAny、および Wait の各メソッドは、呼び出し側のスレッドの実行を明示的に一時停止して、実行中のタスクを待たせるために使用します。

タスクの実行をキャンセルするには、関連する ITask インスタンスの Cancel メソッドを呼び出します。

タスク手続きの作成とその実行の管理は、Run メソッドを使って直接行うことができます。これは、CreateStart を続けて呼び出すのと同じです。

プログラム内の後の時点で戻り値が必要になるタスクでは、ジェネリック関数の Future を使用すると、必要な値を求めるタスクを他のタスクと並列で起動することができます。そうすれば、後で必要になったときに GetValue メソッドを呼び出して、その値を取得することができます。

並列で実行されるタスクでグローバルに使用可能なリソースや変数などが必要な場合には、System.SyncObjs ユニットの同期ツールを使用して、競合の問題を回避します。

関連項目