diff --git a/assignment2_handout.c b/assignment2_handout.c index 0519f6b..f1ff5e1 100644 --- a/assignment2_handout.c +++ b/assignment2_handout.c @@ -130,9 +130,12 @@ void get_into_lift(lift_info *lift, int direction) { // Wait for person to get into lift Sleep(GETINSPEED); - ---- // Set lift to enter ---- // Signal passenger to enter + //semaphore_wait(s); + semaphore_wait(lift->stopsem); + semaphore_signal(lift->stopsem); + //--//semaphore_signal(s); + // Set lift to enter + // Signal passenger to enter } else { break; } @@ -183,8 +186,8 @@ void* lift_thread(void *p) { // Wait for exit lift delay Sleep(GETOUTSPEED); - ---- // Signal passenger to leave lift + semaphore_signal(&lift.stopsem[i]); + // Signal passenger to leave lift // Check if that was the last passenger waiting for this floor if(!lift.stops[lift.position]) { @@ -246,7 +249,11 @@ void* person_thread(void *p) { // Print person waiting print_at_xy(NLIFTS*4+ floors[from].waitingtogoup +floors[from].waitingtogodown,NFLOORS-from, pr); - + while (1){ + if (lift->direction == 0){ + lift + } + } --- // Wait for a lift to arrive (going up) } else { // One more person waiting to go down