HOlA a todos me podrian ayudar a resolver el problema de los 5 filósofos que consiste en lo siguiente:
Había una vez cinco filósofos que vivían juntos. La vida de cada filósofo consistía principalmente en pensar y comer y, tras años de pensar, todos los filósofos se habían puesto de acuerdo en que la única comida que contribuía a sus esfuerzos eran los espaguetis. Los preparativos de la comida eran simples : una mesa redonda en la que había una gran fuente de espaguetis, cinco platos, uno para cada filósofo y cinco tenedores. Un filósofo que quisiera comer iría a su lugar asignado en la mesa y, usando los dos tenedores de cada lado del plato, cogería los espaguetis y se los comería. El problema es lo siguiente : inventar un ritual (algoritmo) que permita comer a los filósofos. El algoritmo debe satisfacer la exclusión mutua (dos filósofos no pueden emplear el mismo tenedor a la vez), además de evitar el interbloqueo y la inanición.
La idea que tengo es asi:
/* program cena_filósofos */
semaphore tenedor[5] = {1};
int i;
void filosofo(int i)
{
while (cierto)
{
pensar ( );
wait (tenedor [i]);
wait (tenedor [(i + 1)mod 5];
comer ( );
signal (tenedor [(i + 1) mod 5]);
wait (tenedor [1]);
}
}
void main ( )
{
cobegin (filosofo (0), filosofo (1), filosofo (2), filosofo (3), filosofo (4));
}
Espero me puedan ayudar a resolver el problema
Gracias y Saludos