/* * Uses pickup_left_chopstick and pickup_right_chopstick * to pick up the chopsticks */ void putdown_chopsticks(int phil_id){ int left_chopstick = (phil_id + 4) % 5; int right_chopstick = phil_id; putdown_left_chopstick(phil_id); pthread_mutex_unlock(&chopsticks[left_chopstick]); printf("Philosopher #%d releases left chopstick.\n", phil_id); putdown_right_chopstick(phil_id); pthread_mutex_unlock(&chopsticks[right_chopstick]); printf("Philosopher #%d releases right chopstick.\n", phil_id); }
/* * Uses pickup_left_chopstick and pickup_right_chopstick * to pick up the chopsticks */ void putdown_chopsticks(int phil_id){ putdown_left_chopstick(phil_id); pthread_mutex_unlock(&chopstick_mutex[phil_to_chopstick(phil_id, left)]); putdown_right_chopstick(phil_id); pthread_mutex_unlock(&chopstick_mutex[phil_to_chopstick(phil_id, right)]); }