Programmation Concurrente (2016)

Conditions avec les ReentrantReadWriteLock()

Aller en bas

Conditions avec les ReentrantReadWriteLock()

Message par Daoud le 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.
avatar
Daoud

Posts : 1
Join date : 03/12/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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