Preliminary implementation

This commit is contained in:
Brychan Dempsey 2021-04-21 15:16:15 +12:00
parent 6a07f42304
commit 23e4d99071

View File

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