スレッドを初期化する

提供: RAD Studio
移動先: 案内検索

マルチスレッド アプリケーションの構築 への移動


スレッド オブジェクトを初期化するには:

  1. デフォルトのスレッド優先度を割り当てます。
  2. スレッドが解放されるタイミングを指定します。

デフォルトの優先度を割り当てるには:

  1. 次の表に示された値から、スレッドにデフォルト優先度を割り当てます。タイム クリティカルなタスクの処理には高い優先度を使用し、それ以外のタスクの実行には低い優先度を使用します。

優先度

tpIdle

スレッドは、システムがアイドル状態のときにのみ実行されます。tpIdle の優先度を持つスレッドを実行するために、Windows が他のスレッドに割り込むことはありません。

tpLowest

スレッドの優先度は、通常より 2 ポイント低くなります。

tpLower

スレッドの優先度は、通常より 1 ポイント低くなります。

tpNormal

スレッドの優先度は、通常どおりです。

tpHigher

スレッドの優先度は、通常より 1 ポイント高くなります。

tpHighest

スレッドの優先度は、通常より 2 ポイント高くなります。

tpTimeCritical

スレッドの優先度は、最も高くなります。

  1. 新しいコンストラクタを宣言に追加することにより、スレッド クラスの Create メソッド(Delphi の場合)またはデフォルト コンストラクタ(C++ の場合)をオーバーライドします。
  2. コンストラクタをコーディングします。次に示すのは、優先度が低いスレッドの例です。 constructor TMyThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); Priority := tpIdle; end; TMyThread::TMyThread( bool CreateSuspended ) : TThread( CreateSuspended ) { Priority = tpIdle; }
  3. 実行終了時にスレッドを自動的に解放するかどうかを指定します。

警告: CPU に負担のかかる処理のスレッド優先度を高くすると、アプリケーション内の他のスレッドを実行できなくなる可能性があります。時間の大半を外部イベントの待機に費やすスレッドのみ、優先度を高くします。

スレッドが解放されるタイミングを指定するには:

  1. 他のスレッドとの調整が必要ない場合は、スレッドの FreeOnTerminate プロパティを true に設定します。
  2. 別のスレッドとの調整が必要な場合は、スレッドの FreeOnTerminate プロパティを false に設定したうえで、第 1 のスレッドを第 2 のスレッドから明示的に解放します。

関連項目