Jantar Filosofos

583 palavras 3 páginas
/******************************************************************************
* arquivo...: jantar_dos_filosofos.c
* descriусo.: Um clássico da programação paralela, Dijkstra (1965)
*
*
* autor.....: Uilian Ries <uilianries@gmail.com>
* data......: 27/11/2012
*
********************************************************************************/
//-- INCLUDE --------------------------------------------------------------------
#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]; //Todos os filósofos
//-- PROTOTIPAÇÃO --------------------------------------------------------------- void * filosofo ( void * param ); void pegar_hashi ( int id_filosofo ); void devolver_hashi ( int id_filosofo ); void intencao ( int id_filosofo ); void comer ( int id_filosofo ); void pensar ( int id_filosofo );
//-------------------------------------------------------------------------------
/*!
* @fn void * filosofo ( void * param )
* @brief Função que simula um filósofo
* @param vparam id do filósofo
*/
void * filosofo ( void * vparam )
{
int * id = (int *) (vparam); //Repassa o id do filósofo

printf("Filosofo %d foi criado com sucesso\n", *(id) );

while ( 1 ) { pensar( *(id) ); //Aguarda o filósofo pensar pegar_hashi( *(id)

Relacionados

  • Jantar dos Filosofos
    577 palavras | 3 páginas
  • Jantar dos filósofos
    918 palavras | 4 páginas
  • Jantar dos filósofos
    2546 palavras | 11 páginas
  • O Jantar dos Filósofos
    334 palavras | 2 páginas
  • Jantar dos filósofos
    535 palavras | 3 páginas
  • O Jantar dos Filósofos
    339 palavras | 2 páginas
  • Jantar dos filósofos
    1030 palavras | 5 páginas
  • Jantar dos filósofos
    1856 palavras | 8 páginas
  • Entendendo o Jantar dos Filósofos
    1031 palavras | 5 páginas
  • Problema do jantar dos filósofos
    1064 palavras | 5 páginas