Guest User

Untitled

a guest
Apr 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<pthread.h>
  3. #include<semaphore.h>
  4. #include<conio.h>
  5. sem_t pn_and_quespaper;
  6. sem_t done_Assign;
  7. sem_t paper_and_quespaper;
  8. sem_t pn_and_paper;
  9. void doassignment(char *ss)
  10. {
  11. printf("%s -----Is doing his Assignment:-------\n",ss);
  12. }
  13.  
  14. void *Teachers()
  15. {
  16. while(1)
  17. {
  18. sem_wait(&done_Assign);
  19. int rs=rand()%3;
  20. switch (rs) {
  21. case 0: printf("--------------teacher puts Pen and Paper on table:------------\n");
  22. sem_post(&pn_and_paper);
  23. break;
  24. case 1:printf("--------------teacher has put Paper and QuestionPaper on the table:------------\n");
  25. sem_post(&paper_and_quespaper);
  26. break;
  27. case 2:printf("---------------------teacher has put Pen and QuestionPaper on the Table:--------------\n");
  28. sem_post(&pn_and_quespaper);
  29. break;
  30. }
  31. }
  32. }
  33. void *Student_Akhil()
  34. {
  35. while(1){
  36. sleep(rand()%3);
  37.  
  38. sem_wait(&pn_and_paper);
  39.  
  40. doassignment("Student Akhil(has QuestionPaper)";
  41.  
  42. printf("Student Akhil has done Assignment:\n");
  43. sem_post(&done_Assign);
  44.  
  45. }
  46.  
  47. }
  48. void *Student_Bikash()
  49. {
  50. while(1){
  51.  
  52. sem_wait(&paper_and_quespaper);
  53. doassignment("Student B(has Pen)");
  54.  
  55. sleep(rand()%3);
  56.  
  57. printf("Student Bikash has done Assignment\n");
  58. sem_post(&done_Assign);
  59.  
  60. }
  61. }
  62. void *Student_Chetna()
  63. {
  64. while(1){
  65. sleep(rand()%3);
  66. sem_wait(&pn_and_quespaper );
  67. doassignment("Student Chetna(has Paper)");//Wait for student Chetna to complete his Assignment
  68.  
  69.  
  70. printf("Student Chetna has done Assignment\n");
  71. sem_post(&done_Assign);
  72.  
  73. }
  74.  
  75. }
  76. int main() {
  77.  
  78. printf("Student Akhil has QuestionPaper\n");
  79. printf("Student Bikash has Pen\n");
  80. printf("Student Chetna has Paper\n");
  81. sem_init(&pn_and_paper,0,0);
  82. sem_init(&paper_and_quespaper,0,0);
  83.  
  84. sem_init(&pn_and_quespaper,0,0);
  85.  
  86. sem_init(&done_Assign,0,1);
  87. pthread_t t1,t2,t3,v;
  88.  
  89. pthread_create(&t1,NULL,Student_Akhil,NULL);
  90. pthread_create(&t2,NULL,Student_Bikash,NULL);
  91. pthread_create(&t3,NULL,Student_Chetna,NULL);
  92. pthread_create(&v,NULL,Teachers,NULL);
  93. pthread_join(t1,NULL);
  94. pthread_join(t2,NULL);
  95. pthread_join(t3,NULL);
  96. pthread_join(v,NULL);
  97. return 0;
  98. }
Add Comment
Please, Sign In to add comment