Filosofos Comensales
Enviado por jorgiuxxx • 17 de Octubre de 2013 • 270 Palabras (2 Páginas) • 683 Visitas
Elaborar una solución para el problema de los Filósofos comensales utilizando Regiones Críticas con OpenMP.
Condiciones del problema:
- Cinco filósofos.
- Mesa redonda con cinco platos.
- Cinco tenedores, cada uno entre los platos.
- Estados de los filósofos: Pensando, hambriento y comiendo.
- Para que un filósofo pueda comer necesita tomar los dos tenedores.
- Solo dos filósofos pueden estar comiendo al mismo tiempo.
- Evitar que algún filósofo se quede sin comer.
- Puede basarse en el programa de ejemplo que se encuentra en Link Sharing, dentro de esta plataforma. Este programa está incompleto y deberá complementarlo para que cumpla con los requierimientos.
Criterios de evaluación:
- Debe cumplir con los todos los requisitos establecidos.
- Individual.
- Fecha de entrega: 1 de octubre del 2013. Se revisará durante la clase.
#include "stdafx.h"
#include <omp.h>
#include <time.h>
#include <cstdlib>
#define N 5
#define LEFT (i-1)%N
#define RIGHT (i+1)%N
#define THINKING 0
#define HUNGRY 1
#define EATING 2
int state[N],x;
void verificarTenedores(int i){
if(i>0 && i<4)
{
if(state[i]==HUNGRY && state[i-1]!= EATING && state[i+1]!=EATING)
state[i]=EATING;
}
Else
if(i==0)
{
if(state[i]==HUNGRY && state[4]!= EATING && state[1]!=EATING
state[i]=EATING;
}
else
{
if(i==4)
if(state[i]==HUNGRY && state[3]!= EATING && state[0]!=EATING)
state[i]=EATING;
} }
void sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
...