System.Threading.TTask

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

System.Threading.TAbstractTaskSystem.Threading.TThreadPool.TAbstractWorkerDataSystem.TInterfacedObjectSystem.TObjectTTask

Object Pascal

TTask = class(TAbstractTask, TThreadPool.IThreadPoolWorkItem, ITask, TAbstractTask.IInternalTask)

C++

class PASCALIMPLEMENTATION TTask : public TAbstractTask

プロパティ

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


説明

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

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

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

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

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

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

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

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

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

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

関連項目