rendered paste bodybinarysem coffee;
binarysem brewer;
semaphore sync;
int askB = 0;
int mugs;
//---Change To Specs---
int students = 7;
int mugsperpot = 10;
//---------------------
void BrewerCall()
{
int loop;
while (0 == 0) //Won't accept true for some reason;
{
wait(brewer);
wait(coffee);
cout << "Brewer brewed fresh coffee! \n";
mugs = mugsperpot;
for (loop = 0; loop < students; loop++)
signal(sync);
signal(coffee);
}
}
void Student(int num)
{
while(0 == 0) //Won't accept true for some reason;
{
wait(coffee);
if (askB == 1)
{
cout << "Student " << num << " asked brewer to brew more coffee. \n";
cout << "Student " << num << " is sleeping... \n";
askB = 0;
signal(coffee);
signal(brewer);
wait(sync);
}
else if (mugs > 0)
{
cout << "Student " << num << " got a new mug of coffee! \n";
mugs = mugs - 1;
if (mugs <= 0)
askB = 1;
signal (coffee);
}
else
{
cout << "Student " << num << " is sleeping... \n";
signal(coffee);
wait(sync);
}
}
}
main()
{
int loop;
mugs = mugsperpot;
cout << students << "Students starting to study... \n";
initialsem(coffee,1);
initialsem(sync,0);
initialsem(brewer,0);
cobegin
{
BrewerCall();
for(loop = 1; loop <= students; loop++)
Student(loop);
}
}