Professional Documents
Culture Documents
Semaphores
By: Vandana Kate
Semaphores
• A semaphore S is an integer variable that can be
accessed only through two standard atomic
operations : wait() and signal().
int signal(int s)
{
return(++s);
}
void producer() void consumer()
{ {
s=wait(s); s=wait(s);
full=signal(full); full=wait(full);
empty=wait(empty);
i++; empty=signal(empty);
cout<<"\nProducer cout<<"\nConsumer
produces the item x"; consumes item x";
s=signal(s); i--;
} s=signal(s);
}
#include<iostream> while(1)
{
using namespace std; cout<<"\nEnter your choice:";
int s=1,full=0,empty=10,i=0; cin>>n;
switch(n)
void producer(); {
void consumer(); case 1: if((s==1)&&(empty!=0))
producer();
int wait(int); else
int signal(int); cout<<"Buffer is full!";
break;
int main() case 2: if((s==1)&&(full!=0))
{ consumer();
else
int n; cout<<"Buffer is empty!";
cout<<"\n1.Producer\n2.Consumer\n break;
case 3:
3.Exit"; exit(0);
break;
}
}