System.BeginThread
Delphi
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord;
ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord;
var ThreadId: TThreadID): THandle;
C++
extern DELPHI_PACKAGE System::NativeUInt __fastcall BeginThread(void * SecurityAttributes, System::LongWord StackSize, TThreadFunc ThreadFunc, void * Parameter, System::LongWord CreationFlags, TThreadID &ThreadId);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.pas System.hpp |
System | System |
説明
別個の実行スレッドを生成します。
このルーチンまたは TThread オブジェクトを使用すると、別個の実行スレッドを生成することができます。 BeginThread は、新しい実行スレッドを生成し、IsMultiThread グローバル変数を設定して、ヒープをスレッドセーフにします。
ThreadFunc はスレッド関数です。 これは、新しい実行スレッド内で実行されるコードのことです。 ThreadFunc では、そこで発生した例外をすべて処理するべきです。 ただし、BeginThread で実行の枠組みを設定しているため、ThreadFunc で捕捉できなかった例外はすべて、システムのデフォルト例外ハンドラによって捕捉されます。
Parameter
は、1 つの 32 ビット パラメータを指します。これは、解釈を行わずにそのまま ThreadFunc に渡されます。
ThreadId
は、新規スレッドの一意の識別子が返されます。 この ID は、デバッガの [スレッドの状態] ウィンドウに表示されます。
SecurityAttributes
は、Windows の SecurityAttributes レコード(構造体)を指すポインタです。 SecurityAttributes の詳細は、Microsoft のマニュアルを参照してください。
StackSize
は、CreationFlags
に STACK_SIZE_IS_A_RESERVATION が含まれる場合に、新規スレッド用に確保するスタックのサイズです。 含まれない場合には、このパラメータは無視されます。
CreationFlags
は、or で結ばれた一連のビットであり、以下の値を含むことができます。
値 | 意味 |
---|---|
CREATE_SUSPENDED |
スレッドは一時停止状態で作成され、Windows API の ResumeThread 関数が呼び出されるまで実行されません。 このフラグが含まれない場合には、新規スレッドは作成後すぐに実行を開始します。 |
STACK_SIZE_PARAM_IS_A_RESERVATION |
|
BeginThread は、Windows スレッド ハンドルを返されます。 戻り値が 0 であれば、処理は失敗しています。
Attribute は、スレッドに関する情報(優先度、スケジューリング ポリシー、スタック サイズなど)を含む構造体です。