void eat (int id) { long int i = 0, eat_time = rand()%1000000000; acquire_chopsticks(id); printf("Philosopher #%d is eating...\n", id); for (i=0; i<eat_time; i++); release_chopsticks(id); }
void philosophize(void *vptr) { shared_data_t *data = (shared_data_t*)vptr; int philosopher_index = 0; ta_sem_wait(&data->atTableSem); philosopher_index = data->atTable++; ta_sem_signal(&data->atTableSem); fprintf(stderr, "Philosopher %d has been seated\n", philosopher_index); while (!data->stop) { think(philosopher_index); take_chopsticks(philosopher_index, data); eat(philosopher_index); release_chopsticks(philosopher_index, data); } }