Dining Philosophers
Avanza paso a paso las tomas de tenedor e inspecciona posesión, espera y comidas terminadas.
Acerca de esta herramienta
Cinco filósofos comparten cinco tenedores. Paso ejecuta una acción; Iniciar avanza a 0,25–4 acciones/s. Ambos crean el estado inicial al primer uso. Reiniciar conserva la planificación. Ejemplo carga el estado inicial, un filósofo esperando o dos no vecinos comiendo. Estos dos últimos ejemplos eligen Manual y P1 para adquirir o liberar un recurso en el siguiente paso.
P1 necesita F0/F1, P2 F1/F2, P3 F2/F3, P4 F3/F4, P5 F4/F0. Cada uno toma primero el número menor; P5 toma F0 antes de F4. Una acción hace que un pensador tenga hambre, intenta el primer tenedor, intenta el segundo y empieza a comer, o libera ambos y termina una comida. Un intento bloqueado también cuenta. La tabla muestra tenedores tomados y solicitados, bloqueadores y comidas; las líneas muestran la posesión.
Turno rotatorio elige al siguiente filósofo tras cada acción. Manual permite cualquier selección. En el ejemplo de espera P1 tiene F0 y P5 espera: un paso de P1 toma F1, el siguiente libera ambos. P5 puede entonces tomar F0. La jerarquía evita la espera circular, pero no garantiza equidad: elegir siempre a un filósofo esperando no hace que el dueño libere recursos. Es un modelo educativo determinista, sin hilos reales ni tiempo físico.
Cambiar planificación, filósofo o ritmo pausa y conserva el estado. Pausa, ocultar o salir detienen el único temporizador; no se recupera tiempo perdido. Volver, recargar y cambiar de idioma restauran el estado exacto en pausa, incluidos el próximo filósofo, las comidas y el ritmo escrito. Sin cálculo externo. Fuente: Dijkstra y Scholten, Distributed Arbitration (EWD752). Sus hipótesis de arbitraje más fuertes no garantizan equidad para este planificador libre.
Los propietarios de tenedores aparecen en la sección desplegable bajo la tabla. La copia JSON incluye ajustes, ritmo escrito, ejemplo y estado de filósofos y tenedores; importación hasta 32 MiB. Un estado inválido se rechaza sin perder la sesión actual. Los antiguos enlaces de ajustes siguen siendo válidos y empiezan sin simulación. La reproducción automática nunca se restaura. El contador se detiene en el mayor entero JavaScript exacto; Restablecer vuelve a cero. El almacenamiento local y los archivos JSON permanecen en tu dispositivo.
Solo se conservan los valores introducidos en este navegador. No se guardan los resultados calculados ni los historiales.