O Jantar Dos Fil Sofos

1354 palavras 6 páginas
O jantar dos filósofos, o mais famoso dos problemas clássicos de programação concorrente, apresenta, mais uma vez, a competição por um conjunto de recursos - neste caso os garfos. Na verdade, os filósofos não podem comer todos ao mesmo tempo já que não há "garfos" que cheguem para todos. Além disso é preciso garantir que os filósofos não se impeçam uns aos outros de comer entrando num deadlock.

Este problema consiste em cinco filósofos estão sentados em círculo, tentando comer espaguete com a ajuda de garfos. Cada filósofo possui uma bacia de massa mas há apenas cinco garfos, colocados um a direita e outro a esquerda de cada filósofo, para serem compartilhados entre eles. Isto cria um problema, pois ambos os garfos (direita e esquerda) são necessários para cada um dos filósofos poder comer. As alternativas dos filósofos compreendem duas fases: Pensar e Comer. No modo pensar, um filósofo não segura um garfo. Porém, quando está com fome(depois de ficar por um tempo finito no modo Pensar) o filósofo tenta pegar os dois garfos na direita e esquerda.

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//-- CONSTANTES -----------------------------------------------------------------
#define QUANT (5) //Quantidade de filósofos
#define ESQUERDA (id_filosofo + QUANT - 1) % QUANT //Id do filósofo a esquerda do id
#define DIREITA (id_filosofo + 1) % QUANT //Id do filósofo a direita do id
#define PENSANDO (0) //Id para estado pensado
#define FAMINTO (1) //Id para estado de fome
#define COMENDO (2) //Id para estado comendo
//-- GLOBAL --------------------------------------------------------------------- int estado [QUANT]; //Estado dos filósofos pthread_mutex_t mutex; //Região crítica pthread_mutex_t mux_filo [QUANT]; //Mutex por filósofo pthread_t jantar[QUANT];

Relacionados

  • Jantar Dos Fil Sofos
    744 palavras | 3 páginas
  • filosofos
    562 palavras | 3 páginas
  • Eletrotecnica
    16203 palavras | 65 páginas
  • Relatorio de estagio supervisionado
    16236 palavras | 65 páginas
  • Mundo de SOfia
    1347 palavras | 6 páginas
  • Vegetarianismo
    19273 palavras | 78 páginas
  • Teste
    6735 palavras | 27 páginas
  • Psicopatologia E Semiologia Dos Transtornos Mentais Paulo Dalgalarrondo
    198796 palavras | 796 páginas
  • O mercador de veneza
    24571 palavras | 99 páginas
  • Rubens alves-oque é religião
    68536 palavras | 275 páginas