Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Passenger 5 is waiting for car.
- Passenger 4 is waiting for car.
- Passenger 3 is waiting for car.
- Passenger 2 is waiting for car.
- Passenger 1 is waiting for car.
- Passenger 0 is waiting for car.
- Car is waiting for passengers.
- Passenger 4 will take ride in the car
- Passenger 3 will take ride in the car
- Passenger 2 is waiting for car.
- Passenger 1 is waiting for car.
- Passenger 5 is waiting for car.
- Passenger 0 is waiting for car.
- void takeRide(const int passenger_id){
- pthread_mutex_lock(&rollerCoasterLock);
- while(!carIsWaiting || passengersInCar==cap){
- printf("Passenger %d is waiting for car.n", passenger_id);
- pthread_cond_wait(&carLoad, &rollerCoasterLock);
- }
- // numPass--;
- passengersInCar++;
- printf("Passenger %d will take ride in the carn", passenger_id);
- if (passengersInCar == cap){
- pthread_cond_broadcast(&carFull);
- // passengersInCar=0;
- }
- pthread_cond_wait(&carFull, &rollerCoasterLock);
- pthread_cond_wait(&carUnload, &rollerCoasterLock);
- printf("Passenger %d left car.n", passenger_id);
- pthread_mutex_unlock(&rollerCoasterLock);
- pthread_exit(0);
- }
- void load(){
- pthread_mutex_lock(&rollerCoasterLock);
- // if(numPass==0)
- // pthread_exit(NULL);
- while(passengersInCar>0){
- pthread_cond_wait(&carUnload, &rollerCoasterLock);
- }
- carIsWaiting = true;
- pthread_cond_broadcast(&carLoad);
- printf("Car is waiting for passengers.n");
- pthread_cond_wait(&carFull, &rollerCoasterLock);
- carIsWaiting = false;
- pthread_cond_broadcast(&carFull);
- printf("Car is full. Going around...n" );
- pthread_mutex_unlock(&rollerCoasterLock);
- }
- void unload(){
- pthread_mutex_lock(&rollerCoasterLock);
- pthread_cond_broadcast(&carUnload);
- puts("unloading...");
- passengersInCar=0;
- pthread_mutex_unlock(&rollerCoasterLock);
- // pthread_exit(0);
- }
Add Comment
Please, Sign In to add comment