/ /スレッドIDを指定し、Windows上でまだ実行中かどうかを判断する方法-C ++、Windows、マルチスレッド

スレッドIDが与えられた場合、それがWindows上で実行中かどうかを判断する方法 - c ++、windows、マルチスレッド

Linuxでは、これを行うpthread_kill()があります。それに対応するWindowsを見つけようとしています。

言い換えれば、スレッドIDを指定すると、スレッドがまだ実行中かどうかを判断する方法はありますか?

GetExitCodeThread()は私が見つけた最も近いものですが、パラメータとしてスレッドIDではなくスレッドハンドルが必要です。

回答:

回答№1は6

この目的のためにスレッドIDを使用しないでください。スレッドIDは再利用できるため、スレッドIDを取得すると、そのスレッドは終了し、同じスレッドIDで別のスレッドを開始できます。

ハンドルにはこの問題はありません。スレッドが終了すると、そのスレッドへのすべてのハンドルはスレッドの終了状態を反映します。

を使用して、指定されたIDを持つスレッドのハンドルを取得できます。 OpenThread;その後、そのハンドルをに渡すことができます GetExitCodeThread スレッドが終了したかどうかを判断します。


回答№2については2

要するに、いいえ、ありません。 指定された識別子を持つスレッドが存在するかどうかを判断できます。ただし、特定のIDを使用して参照するために使用したスレッドがまだ実行中かどうかを根本的に判断することはできません。これは、スレッドの完了後にスレッドIDがリサイクルされるためです。

スレッドの有効期間を追跡するには、スレッドハンドルを取得する必要があります。これにより、必要な限りスレッドを存続させることができます。 OpenThread() IDを指定してスレッドへのハンドルを取得します。 IDを取得したらすぐにこれを実行し、常にスレッドハンドルを使用する必要があります。