Thread.Suspend、ガベージ コレクション、およびセーフ ポイント
更新 : 2007 年 11 月
スレッドで Thread.Suspend を呼び出すと、システムはスレッドの中断が要求されたことを認識しますが、スレッドを実際に中断する前に、スレッドがセーフ ポイントに達するまで待機して、その実行を許可します。スレッドのセーフ ポイントとは、ガベージ コレクションを行うことができる、実行中のポイントのことです。
セーフ ポイントに達した後は、中断されたスレッドがマネージ コード内でこれ以上進行しないことが、ランタイムによって保証されます。マネージ コードの外部で実行されているスレッドは、いつでもガベージ コレクションを実行でき、このスレッドの実行は、マネージ コードの実行の再開を試みるまで継続されます。
メモ : |
---|
ガベージ コレクションを実行するには、そのコレクションを実行しているスレッドを除き、すべてのスレッドを中断する必要があります。各スレッドを中断するには、そのスレッドをセーフ ポイントに移動する必要があります。 |