Ejemplo n.º 1
0
void putdown_chopsticks(int phil_id){
  /*Use putdown_chopstick to put down the chopsticks*/    
  /*Your code here*/
  if(phil_id % 2 == 0){
    putdown_one_chopstick(phil_to_chopstick(phil_id, left), phil_id);
    putdown_one_chopstick(phil_to_chopstick(phil_id, right), phil_id);
  }
  else{
    putdown_one_chopstick(phil_to_chopstick(phil_id, right), phil_id);
    putdown_one_chopstick(phil_to_chopstick(phil_id, left), phil_id);
  }
}
Ejemplo n.º 2
0
void pickup_chopsticks(int phil_id){
  /*Use     
    pickup_chopstick(phil_to_chopstick(phil_id, right), phil_id);

    and

    pickup_chopstick(phil_to_chopstick(phil_id, left), phil_id);
    
    to pickup the right and left chopsticks.  Beware of deadlock!
  */
  
  /*Your code here*/
  if(phil_id % 2 == 0){
    pickup_one_chopstick(phil_to_chopstick(phil_id, left), phil_id);
    pickup_one_chopstick(phil_to_chopstick(phil_id, right), phil_id); 
  }
  else{
    pickup_one_chopstick(phil_to_chopstick(phil_id, right), phil_id);
    pickup_one_chopstick(phil_to_chopstick(phil_id, left), phil_id); 
  }
}
Ejemplo n.º 3
0
/*
 * Uses pickup_left_chopstick and pickup_right_chopstick
 * to pick up the chopsticks
 */   
void pickup_chopsticks(int phil_id){
	if(phil_to_chopstick(phil_id, left) < phil_to_chopstick(phil_id, right))
    {
      pthread_mutex_lock(&chopstick_mutex[phil_to_chopstick(phil_id, left)]);
      pickup_left_chopstick(phil_id);
      pthread_mutex_lock(&chopstick_mutex[phil_to_chopstick(phil_id, right)]);
      pickup_right_chopstick(phil_id);
    }
    else
    {
      pthread_mutex_lock(&chopstick_mutex[phil_to_chopstick(phil_id, right)]);
      pickup_right_chopstick(phil_id);
      pthread_mutex_lock(&chopstick_mutex[phil_to_chopstick(phil_id, left)]);   
      pickup_left_chopstick(phil_id);  
    }
}
Ejemplo n.º 4
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)]);
}