• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 6 : Concurrence et Distribution

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TP 6 : Concurrence et Distribution"

Copied!
1
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 Informatique TP 6 : Concurrence et Distribution

Dans ce Tp on fera quelques exercices de programmation distribu´ee sans l’utilisation de vari- ables partag´ees. La communication entre threads se fera `a l’aide de passage de message en utilisant le protocole TCP. Pour cela on utilisera les classeSocketetServerSocketdu packagejava.net Les messages seront de typeOutputStream()et InputStream().

Exercice1:

Programmez une classe ConcurrentBufferavec un champ de type LinkedList<String> et deux m´ethodesputetgetqui agissent en exclusion mutuelle :

– La m´ethodeputajoute une chaˆıne de caract`eres `a la liste et ensuite r´eveille les threads en attente sur cette liste.

– La m´ethodeget, si la liste est vide, met en attente le thread appelant, sinon elle renvoie la premi`ere chaˆıne de caract`eres de la liste, et la retire de la liste.

Exercice2:

Impl´ementez en Java une version distribu´ee de l’algorithme producteur/consommateur . Pour ce faire, un serveur ´ecoute sur deux ports. Sur un port, le serveur attend les connexions d’un client producteur et sur l’autre port les connexions d’un client consommateur. Un client producteur envoie au serveur une chaˆıne de caract`eres qu’il aura re¸cu par l’entr´ee standard. Le serveur stocke alors cette chaˆıne de caract`eres dans un objet de typeConcurrentBufferUn client consommateur attend que le serveur lui envoie des chaˆınes de caract`eres qui ont ´et´e plac´es dans le buffer.

Attention : le serveur attende des connexion sur deux ports diff´erents.

Exercice3:

Modifiez le programme de l’exercice pr´ec´edent pour avoir plusieurs producteurs et plusieurs consommateurs

Exercice4:

Impl´ementez une version distribu´ee du dˆıner des philosophes. Les baguettes ne sont pas repr´esent´ees explicitement. Quand un philosophe veut prendre une baguette, demande la per- mission `a son voisin. Si celui ci est en train de manger, le premier philosophe attend que son voisin lui envoie le message en disant qu’il a termin´e.

Références

Documents relatifs

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

L`a aussi il est recommand´ e d’appeler cette fonction au sein d’une section critique prot´eg´ee par le mutex utilis´e par le thread en attente (dans l’exemple pr´ec´edent

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

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

La file FIFO devrait ˆ etre repr´ esent´ ee par une liste simplement chaˆın´ ee avec un pointeur top sur le d´ ebut de la liste (utilis´ e par les consommateurs pour commencer `

Quand le thread appelant s’´eveille (` a cause d’un signal envoy´e par un autre thread – voir ci-dessous) la fonc- tion pthread cond wait va reprendre le verrou.. Ce