Dining Philosophers

Avancer pas à pas dans les prises de fourchettes et inspecter possession, attente et repas achevés.

À propos de cet outil

Cinq philosophes partagent cinq fourchettes. Pas exécute une seule action ; Démarrer avance à 0,25–4 actions/s. Ces boutons créent l’état initial au premier usage. Réinitialiser conserve la planification. Exemple charge l’état initial, un philosophe en attente ou deux philosophes non voisins qui mangent. Ces deux derniers exemples choisissent Manuel et P1 pour pouvoir acquérir ou libérer une ressource au prochain pas.

P1 utilise F0/F1, P2 F1/F2, P3 F2/F3, P4 F3/F4, P5 F4/F0. Chacun prend le plus petit numéro en premier, donc P5 prend F0 avant F4. Une action rend un penseur affamé, tente la première fourchette, tente la seconde et commence à manger, ou libère les deux fourchettes et achève un repas. Un essai bloqué compte aussi. Le tableau montre fourchettes tenues et demandées, bloqueurs et repas ; les lignes indiquent les propriétaires.

Tour de rôle choisit le philosophe suivant après chaque action. Manuel permet toute sélection. Dans l’exemple d’attente P1 tient F0 et P5 attend : un pas de P1 prend F1, le suivant libère les deux fourchettes. P5 peut alors prendre F0. La hiérarchie évite l’attente circulaire mais ne garantit pas l’équité : sélectionner constamment un philosophe en attente ne fait pas libérer son propriétaire. C’est un modèle pédagogique déterministe, sans véritables fils d’exécution ni temps physique.

Modifier planification, philosophe ou rythme met en pause et conserve l’état. Pause, masquage ou navigation arrêtent l’unique minuterie ; aucun rattrapage du temps écoulé. Retour, rechargement et changement de langue restaurent exactement l’état en pause, y compris le prochain philosophe, les repas et le rythme saisi. Aucun calcul externe. Source : Dijkstra et Scholten, Distributed Arbitration (EWD752). Ses hypothèses d’arbitrage plus fortes ne garantissent pas l’équité de ce planificateur libre.

Les propriétaires des fourchettes figurent dans la section dépliable sous le tableau. Un état invalide est rejeté sans perdre la session actuelle. Les anciens liens de réglages restent lisibles et commencent sans simulation. La lecture automatique ne reprend jamais. Le compteur s’arrête au plus grand entier JavaScript exact ; Réinitialiser repart de zéro. Stockage local et fichiers JSON restent sur votre appareil.

Seules les valeurs saisies sont conservées dans ce navigateur. Les résultats calculés et historiques ne sont pas enregistrés.