Example #1
0
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);
}
Example #2
0
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);
    }
}