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); } }
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); } }