Salut,
je suis en train d'étudier la concurrence et pour l'occasion, je dois créer une base de donnée. Seulement, il y a des parties qui me paraissent louches:
Voici d'abord une partie de la donnée:
Comme je comprends le problème, on empêche les accès simultannés en lecture (car il y a un verrou), mais peut-être je me trompe (le verrou serait là juste pour contrôler l'écriture).Une table peut désormais être verrouillée en lecture ou en écriture par une transaction. Avant d’exécuter n’importe quelle opération de lecture/écriture, le serveur de base de données doit s’assurer de posséder le verrou correspondant. Au besoin, un verrou en lecture pourra ẽtre transformé en un verrou en écriture. Les verrous détenus par une transaction ne sont restitués qu’à la fin de la transaction. L’interblocage sera traité de la façon suivante. Un thread-exécutant qui demande un verrou attend au maximum t secondes.
Mais ce qui me pose vraiment problème, c'est que je ne sais pas comment convertir le verrou de lecture en écriture. Je crois que je ne comprends même pas ce que ça veut dire. Est-ce que ça voudrait dire que lors d'une écriture (s'il n'y a pas de lecture), alors on a 2 verrous à disposition ? Ca pose problème là...
Pour implémenter ça, je pensais utiliser l'interface "ReadWriteLock", il me semble qu'elle correspond vraiment bien à ce cas là, mais vraiment, cette partie sur le verrou qui devient lecture ou écriture au besoin me pose problème.
Merci beaucoup pour votre aide![]()
Partager