Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<pthread.h>
- #include<semaphore.h>
- #include<conio.h>
- sem_t pn_and_quespaper;
- sem_t done_Assign;
- sem_t paper_and_quespaper;
- sem_t pn_and_paper;
- void doassignment(char *ss)
- {
- printf("%s -----Is doing his Assignment:-------\n",ss);
- }
- void *Teachers()
- {
- while(1)
- {
- sem_wait(&done_Assign);
- int rs=rand()%3;
- switch (rs) {
- case 0: printf("--------------teacher puts Pen and Paper on table:------------\n");
- sem_post(&pn_and_paper);
- break;
- case 1:printf("--------------teacher has put Paper and QuestionPaper on the table:------------\n");
- sem_post(&paper_and_quespaper);
- break;
- case 2:printf("---------------------teacher has put Pen and QuestionPaper on the Table:--------------\n");
- sem_post(&pn_and_quespaper);
- break;
- }
- }
- }
- void *Student_Akhil()
- {
- while(1){
- sleep(rand()%3);
- sem_wait(&pn_and_paper);
- doassignment("Student Akhil(has QuestionPaper)";
- printf("Student Akhil has done Assignment:\n");
- sem_post(&done_Assign);
- }
- }
- void *Student_Bikash()
- {
- while(1){
- sem_wait(&paper_and_quespaper);
- doassignment("Student B(has Pen)");
- sleep(rand()%3);
- printf("Student Bikash has done Assignment\n");
- sem_post(&done_Assign);
- }
- }
- void *Student_Chetna()
- {
- while(1){
- sleep(rand()%3);
- sem_wait(&pn_and_quespaper );
- doassignment("Student Chetna(has Paper)");//Wait for student Chetna to complete his Assignment
- printf("Student Chetna has done Assignment\n");
- sem_post(&done_Assign);
- }
- }
- int main() {
- printf("Student Akhil has QuestionPaper\n");
- printf("Student Bikash has Pen\n");
- printf("Student Chetna has Paper\n");
- sem_init(&pn_and_paper,0,0);
- sem_init(&paper_and_quespaper,0,0);
- sem_init(&pn_and_quespaper,0,0);
- sem_init(&done_Assign,0,1);
- pthread_t t1,t2,t3,v;
- pthread_create(&t1,NULL,Student_Akhil,NULL);
- pthread_create(&t2,NULL,Student_Bikash,NULL);
- pthread_create(&t3,NULL,Student_Chetna,NULL);
- pthread_create(&v,NULL,Teachers,NULL);
- pthread_join(t1,NULL);
- pthread_join(t2,NULL);
- pthread_join(t3,NULL);
- pthread_join(v,NULL);
- return 0;
- }
Add Comment
Please, Sign In to add comment