Guest User

Untitled

a guest
Apr 25th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. Passenger 5 is waiting for car.
  2. Passenger 4 is waiting for car.
  3. Passenger 3 is waiting for car.
  4. Passenger 2 is waiting for car.
  5. Passenger 1 is waiting for car.
  6. Passenger 0 is waiting for car.
  7. Car is waiting for passengers.
  8. Passenger 4 will take ride in the car
  9. Passenger 3 will take ride in the car
  10. Passenger 2 is waiting for car.
  11. Passenger 1 is waiting for car.
  12. Passenger 5 is waiting for car.
  13. Passenger 0 is waiting for car.
  14.  
  15. void takeRide(const int passenger_id){
  16. pthread_mutex_lock(&rollerCoasterLock);
  17. while(!carIsWaiting || passengersInCar==cap){
  18. printf("Passenger %d is waiting for car.n", passenger_id);
  19. pthread_cond_wait(&carLoad, &rollerCoasterLock);
  20. }
  21. // numPass--;
  22. passengersInCar++;
  23. printf("Passenger %d will take ride in the carn", passenger_id);
  24. if (passengersInCar == cap){
  25. pthread_cond_broadcast(&carFull);
  26. // passengersInCar=0;
  27. }
  28. pthread_cond_wait(&carFull, &rollerCoasterLock);
  29. pthread_cond_wait(&carUnload, &rollerCoasterLock);
  30. printf("Passenger %d left car.n", passenger_id);
  31. pthread_mutex_unlock(&rollerCoasterLock);
  32. pthread_exit(0);
  33. }
  34.  
  35. void load(){
  36. pthread_mutex_lock(&rollerCoasterLock);
  37. // if(numPass==0)
  38. // pthread_exit(NULL);
  39. while(passengersInCar>0){
  40. pthread_cond_wait(&carUnload, &rollerCoasterLock);
  41. }
  42. carIsWaiting = true;
  43. pthread_cond_broadcast(&carLoad);
  44. printf("Car is waiting for passengers.n");
  45.  
  46. pthread_cond_wait(&carFull, &rollerCoasterLock);
  47. carIsWaiting = false;
  48. pthread_cond_broadcast(&carFull);
  49. printf("Car is full. Going around...n" );
  50. pthread_mutex_unlock(&rollerCoasterLock);
  51. }
  52.  
  53. void unload(){
  54. pthread_mutex_lock(&rollerCoasterLock);
  55.  
  56. pthread_cond_broadcast(&carUnload);
  57. puts("unloading...");
  58. passengersInCar=0;
  59. pthread_mutex_unlock(&rollerCoasterLock);
  60. // pthread_exit(0);
  61. }
Add Comment
Please, Sign In to add comment