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