スレッド実行の中断

スレッドは、別のスレッドの実行を中断および再開できます。 スレッドが中断されている間は、プロセッサで時間のスケジュールは設定されません。

スレッドが中断状態 ( CREATE_SUSPENDED フラグを持つ) で作成された場合、別のスレッドが中断されたスレッドへのハンドルを使用して ResumeThread 関数を呼び出すまで、スレッドの実行は開始されません。 これは、実行を開始する前にスレッドの状態を初期化する場合に役立ちます。 作成時にスレッドを中断すると、 ResumeThread を呼び出すときに中断されたスレッドがそのコードの開始点を確実に実行できるため、1 回限りの同期に役立ちます。

SuspendThread 関数は、スレッドの実行が中断されるコード内のポイントを制御しないため、スレッド同期に使用することを意図していません。 この関数は、主にデバッガーで使用するように設計されています。

スレッドは、Sleep 関数または SleepEx 関数を呼び出すことによって、指定された間隔で実行を一時的に生成できます。これは、ユーザーが操作の結果を観察できる十分な時間実行を遅らせる可能性があるため、スレッドがユーザーの操作に応答する場合に特に便利です。 スリープ間隔中、スレッドはプロセッサで時間のスケジュールが設定されません。

SwitchToThread 関数は Sleep および SleepEx に似ていますが、間隔を指定することはできません。 SwitchToThread を使用すると、スレッドはタイム スライスをあきらめることができます。