• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 6 : S´emaphores en Java

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TP 6 : S´emaphores en Java"

Copied!
1
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 Informatique TP 6 : S´ emaphores en Java

Exercice 1: La piscine

Une piscine dispose d’un certain nombre N

c

de cabines et d’un certain nombre N

p

de paniers.

Un client qui se pr´esente ` a l’entr´ee de la piscine effectue les ´etapes suivantes : a. il doit attendre une clef de cabine,

b. il doit demander et obtenir un panier vide, c. il occupe la cabine pour se changer,

d. il lib`ere la cabine et la clef (et d´epose son panier plein au vestiaire), e. il va nager,

f. il cherche son panier plein au vestiaire et attend qu’une cabine se lib`ere, g. il prend une clef de cabine et occupe la cabine pour se changer, et h. lib`ere la cabine et rend la clef et le panier vide (et quitte la piscine).

Le but de cet exercice est de d´evelopper un programme concurrent simulant le comportement des clients de cette piscine.

1. Cr´eez une classe Client ´etendant la classe Thread et dont la m´ethode run caract´erise le comportement d’un client de la piscine. Les paniers et les cabines seront repr´esent´es par deux s´emaphores semCabine et semPanier qui seront des champs de la classe Client (ces s´emaphores seront partag´es par tous les threads repr´esentant les clients de la piscine).

2. Testez votre programme avec diff´erents nombres de clients et diff´erents nombres de cabines et de paniers (le nombre de cabines et de paniers ´etant d´etermin´e par la valeur avec laquelle le s´emaphore correspondant est initialis´e). En particulier, essayez d’obtenir (en faisant dormir les threads ` a un certain endroit) un deadlock pour le cas o` u le nombre de cabines et plus petit que le nombre de paniers, lui mˆeme ´etant plus petit que le nombre de clients.

3. Dans le cas pr´ecis o` u il y a un deadlock, proposez une solution en modifiant le code des clients sans sans changer les nombres de clients, paniers ou cabines. Indice : Vous pouvez vous servir des m´ethodes propos´ees par la classe Semaphore.

Exercice 2: Le bus avec des s´ emaphores

Reprenez l’exercice 3 du Tp3 sur le probl`eme du bus et impl´ementez une solution en Java

utilisant des s´emaphores.

Références

Documents relatifs

Modifier le code d´ ej` a ´ ecrit pour les classes Reader, Writer et Main pour qu’elles utilise la classe RWexclusive ` a la place de RWbasic.. Observer le comportement de

Dans ce Tp on impl´ ementera quelques algorithmes d’exclusion mutuelle sans utiliser les prim- itives de haut niveau comme les m´ ethodes synchronized ou les variables de

Le serveur stocke alors cette chaˆıne de caract` eres dans un objet de type ConcurrentBuffer Un client consommateur attend que le serveur lui envoie des chaˆınes de caract` eres qui

Le premier argument est l’adresse d’un descripteur de thread, le deuxi`eme argument (que nous mettrons toujours ` a NULL dans ces TP) est un attribut de thread de type pthread_attr_t

Dans cet exercice on souhaite mod´eliser ce probl`eme du dˆıner des philosophes par un programme en C dans leque chaque baguette sera repr´esent´ee par un verrou et chaque

La premi`ere n’autorisera pas un consommateur ` a lire une nouvelle donn´ee tant que la derni`ere donn´ee lue n’aura pas ´et´e vue par tous les consommateurs (le dernier

Supposez qu’on dispose d’une seule salle de bain qui peut ˆetre utilis´ee par des hommes ou des femmes mais pas au mˆeme moment.. Programmez en utilisant les s´emaphores une

Quand le probl`eme de trois elfes a ´et´e r´esolu, si d’autres elfes ont un probl`eme ils doivent attendre de pouvoir former ` a leur tour un groupe de trois personnes et attendre