void *philosopher (void *id) {
	while (1) {
		printf("thinking, %d\n", *(int *)id);
		usleep(1000 * 500); //think
		printf("hungry, %d\n", *(int *)id);
		take_chopsticks((int *)id);
		printf("eating, %d\n", *(int *)id);
		usleep(1000 * 500); //eat
		drop_chopsticks((int *)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);
    }
}