Presentation du projet
Le projet SYNCJ consiste à développer une solution permettant de faciliter l'apprentissage des outils de synchronisation pour les étudiants en 4ème année au département informatique à l'INSA RENNES. Pour cela, nous avons implémenter le mécanisme des compteurs de synchronisation en langage JAVA.
Les compteurs de synchronisation
Les compteurs de synchronisation sont un mécanisme de synchronisation moins restrictif que l'exclusion mutuelle. Ce mécanisme permet une gestion automatique des réveils et une mise à jour automatique des variables de synchronisation.
Les synchronisations portent sur l'état des compteurs qui permettent de comptabiliser et de contrôler les accès aux méthodes.
Lors de l’invocation d’une méthode, les compteurs sont mis à jour automatiquement.
Code écrit par le programmeur
Les conditions
Ces compteurs de synchronisation sont utilisés via des conditions qui permettent de gérer les synchronisations du programme.
Exemple du Lecteur/Rédacteur:
On impose une condition sur la lecture : Aucune écriture ne doit être en cours.
On impose aussi une condition sur l’écriture : Aucune écriture et aucune lecture ne doivent être en cours .
Le compilateur
A partir des noms des conditions déclarées par l'utilisateur, nous générons la déclaration des compteurs de synchronisation et les méthodes de test.
Ensuite, nous générons automatiquement les mises à jour des compteurs et l'appel aux primitives de synchronisation Java en fonction du nom de la méthode.
Code final généré
Finalement, le code du Lecteur/Redacteur écrit part l'utilisateur ci-dessus sera traduit comme suit :
On peut remarquer ici la génération des compteurs de synchronisation et des méthodes de test.