関数を使用して ThreadA を作成しましたCreateThread
。ThreadA 内で、CreateThread
関数を使用して別のスレッド ThreadB が作成されます。
ここで、ThreadA から ThreadB を終了したいのですが、TerminateThread
関数が失敗します。
ThreadA が ThreadB を終了する権利を持っていない可能性があるためですか? 私はこの状況に本当に混乱しています。
関数を使用して ThreadA を作成しましたCreateThread
。ThreadA 内で、CreateThread
関数を使用して別のスレッド ThreadB が作成されます。
ここで、ThreadA から ThreadB を終了したいのですが、TerminateThread
関数が失敗します。
ThreadA が ThreadB を終了する権利を持っていない可能性があるためですか? 私はこの状況に本当に混乱しています。
TerminateThread
一般に、ロックを保持したままにしておくと、あらゆる種類の問題が発生する可能性があるため、決して使用しないでください。MSDNが言うように:
代わりにできることは、別のスレッドからの終了を通知するために使用できるイベント オブジェクトでスレッドを待機させることです。
通常のスレッド処理内で終了シグナルの定期的なチェックを実行する必要がある場合は、待機タイムアウトをゼロに設定して、スレッドが終了を待っている間も作業を続けることができます。