[SOS] Dilemme

Cyril Dupuit cyrildupuit at hotmail.com
Mar 12 Oct 15:43:24 CEST 2004


Salut,
Je suis face à un étrange dilemme ! J'explique :
Pour protéger une ressource, j'utilise un sémaphore. Jusque là, tout est 
normal.
Imaginons qu'un thread de priorité 10 accède à une ressource R. Il est 
autorisé à l'utiliser.
En pleine utilisation de cette ressource, un thread plus prioritaire (2) 
supprime le thread de priorité 10 sans qu'il ne puisse libérer R. La 
ressource R risque alors d'être corrompue.

Pour remédier à ce problème, j'ai décidé de modifier la gestion de la 
suppression d'un thread. Si un thread utilise une ressource, le thread 
voulant supprimer un thread utilisateur de cette ressource sera endormi 
jusqu'à ce que la ressource soit libérée. Puis le thread en question pourra 
supprimer le thread ayant fini d'utiliser cette ressource.

Cette solution me semblait parfaitement correcte, mais j'avais oublié un 
aspect important :
Si plusieurs threads sont « entrelacés » autour de une ou plusieurs 
ressources, le thread voulant supprimer un des threads utilisateur d'une 
ressource ne pourra pas le faire et le thread suppresseur sera endormi à 
jamais.

C'est ça mon étrange dilemme ! Dois-je supprimer à la « barbare » le thread 
risquant une corruption des ressources ou attendre et risquer un plantage du 
système ?

Aurais-tu une idée sur le problème que je me pose ? Moi, je ne vois pas.

Merci d'avance.

Cyril.

_________________________________________________________________
Hotmail : bientôt 250 Mo de stockage ! 
http://www.imagine-msn.com/hotmail/fr-fr/



Plus d'informations sur la liste de diffusion Sos