[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