Programmation Concurrente (2016)


Rejoignez le forum, c’est rapide et facile

Programmation Concurrente (2016)
Programmation Concurrente (2016)
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Cartes Pokémon EV6.5 : où trouver le ...
Voir le deal

Conditions avec les ReentrantReadWriteLock()

Aller en bas

Conditions avec les ReentrantReadWriteLock() Empty Conditions avec les ReentrantReadWriteLock()

Message par Daoud Lun Déc 03, 2018 5:12 pm

Bonjour,

Dans le TME 7, dans la classe EnsembleDonnees j'ai crée une variable ReentrantReadWriteLock ainsi que trois conditions associées au producteur, au lecteur, et à l'effaceur.
Dans une méthode lecture() (appelée par la classe Lecteur) il y'a un verrou lock.readLock().lock()/unlock() qui "englobe" la méthode, et dans celle-ci j’exécute un await temporisé sur la condition du lecteur.

Le problème est qu'à l’exécution, une "IllegalMonitorStateException" est levée, car le await est exécuté sur une condition crée sur un writeLock(), et il est  entouré par des lock.readLock().lock()/unlock() et non des lock.writeLock().lock()/unlock() .

Le seul moyen pour ne plus avoir cette erreur est donc de remplacer les readLock() par des writeLock(), mais dans ce cas l'implémentation ReentrantReadWriteLock perd tout son intérêt.

Cordialement.
Daoud
Daoud

Posts : 1
Join date : 03/12/2018

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum