Exemple #1
1
// 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;
}
Exemple #2
0
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;
}