// Cup boy simulation void* cup_boy(void){ void* ret_val = 0; cup_boy_lock = binary_semaphore_create(0); int i,n; for(;;){ if(finished_shift){ thread_exit(ret_val); } n =DBB->full->value; for(i = 1; i < n; i++){ struct Cup* current_cup = wash_dirty(); sleep(1); add_clean_cup(current_cup); //need to write to file intsead of screen TODO printf(1,"Cup boy added clean cup %d\n",current_cup->id); } printf(1,"Clean Boy- sleep\n"); binary_semaphore_down(cup_boy_lock); printf(1,"Clean Boy- awake\n"); } return ret_val; }
void* cupboy_work(){ while(1){ semaphore_down(cupboy_lk); int i; int k=dirty_cups_count(); for(i=0; i<k; i++){ struct Cup* cup=wash_dirty(); sleep(1); add_clean_cup(cup); printf(fileOut, "Cup boy added clean cup %d\n", cup->id); } } return 0; }