Les threads

Exercice 1

Solution du problème des 5 philosophes vu en cours philosophes.c. On utilise un tableau baguette pour stocker l'état des baguettes. Un mutex protège les baguettes. Avant de commencer à manger, le philosophe i attend la condition peutmanger[i] qui correspond au prédicat baguette[gauche] == 1 && baguette[droite] == 1. Après avoir fini de manger, chaque philosophe signale les conditions de ses voisins.

Exercice 2

Solution du problème des 5 philosophes en Java. Chaque philosophe prend et laisse ses baguettes dans une méthode synchronized.

alt="Your browser understands the <APPLET> tag but isn't running the applet, for some reason." Your browser is completely ignoring the <APPLET> tag!
Les philosophes qui pensent sont en vert
Les philosophes affamés sont en orange
Les philosophes qui mangent sont en rouge
Les chiffres représentent le temps en secondes depuis le dernier changement d'état

Vous pouvez télécharger le fichier philosophers.jar.

Exercice 3

Solution du problème du barbier endormi barbier.c. Cette solution peut provoquer de la famine de certains clients. Le temps moyen entre l'arrivée de deux clients est plus petit que le temps moyen de service. Les clients ne sont pas forcement servis dans l'ordre de leur arrivée. C'est pourquoi certains clients peuvent attendre infiniment. Essayez de modifier le programme enfin d'éviter cette situation.