Thread.Suspend, Garbage Collection et les points sans risque

Mise à jour : novembre 2007

Lorsque vous appelez Thread.Suspend sur un thread, le système remarque la demande d'interruption de thread et permet au thread de s'exécuter jusqu'à ce qu'il atteigne un point sans risque avant d'interrompre le thread. Un point sans risque pour un thread correspond à un point dans son exécution où il est possible d'effectuer un garbage collection.

Une fois qu'un point sans risque a été atteint, le runtime garantit que le thread suspendu ne fera pas plus de progrès dans le code managé. Un thread qui s'exécute en dehors du code managé est toujours sans risque pour un garbage collection, et son exécution se poursuit jusqu'à ce qu'il tente de reprendre l'exécution du code managé.

Remarque :

Afin d'effectuer un garbage collection, le runtime doit suspendre tous les threads - sauf le thread qui effectue la collection. Chaque thread doit être acheminé vers un point sans risque avant d'être suspendu.

Voir aussi

Concepts

Gestion automatique de la mémoire

Référence

Thread

GC

Autres ressources

Threading managé