Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5.  
  6. pthread_mutex_t mutexKakao = PTHREAD_MUTEX_INITIALIZER;
  7. pthread_mutex_t mutexMleko = PTHREAD_MUTEX_INITIALIZER;
  8. pthread_mutex_t mutexCzekolada = PTHREAD_MUTEX_INITIALIZER;
  9.  
  10.  
  11. int kakao =0;
  12. int mleko =0;
  13. int czekolada =0;
  14.  
  15. void * producentKakao()
  16. {
  17. while(1)
  18. {
  19. pthread_mutex_lock(&mutexKakao);
  20. ++kakao;
  21. pthread_mutex_unlock(&mutexKakao);
  22.  
  23. printf("Kakao!");
  24. usleep(300);
  25.  
  26.  
  27. }
  28.  
  29. }
  30.  
  31. void * producentMleka()
  32. {
  33. while(1)
  34. {
  35.  
  36. pthread_mutex_lock(&mutexMleko);
  37. ++mleko;
  38. pthread_mutex_unlock(&mutexMleko);
  39. printf("Mleko!");
  40. usleep(300);
  41.  
  42.  
  43. }
  44. }
  45.  
  46.  
  47. void * konsumentCzekolady()
  48. {
  49. while(1)
  50. {
  51. pthread_mutex_lock(&mutexKakao);
  52. --kakao;
  53. pthread_mutex_unlock(&mutexKakao);
  54.  
  55. pthread_mutex_lock(&mutexMleko);
  56. --mleko;
  57. pthread_mutex_unlock(&mutexMleko);
  58.  
  59. if((kakao>10)&&(mleko>10))
  60. {
  61. ++czekolada;
  62. usleep(400);
  63. }
  64. else
  65. {
  66. ++czekolada;
  67. usleep(800);
  68. }
  69.  
  70. printf("Czekolada!");
  71.  
  72.  
  73.  
  74. }
  75. }
  76.  
  77.  
  78.  
  79.  
  80.  
  81. int main()
  82. {
  83. pthread_t prodMlek, prodKak, konsum1, konsum2;
  84.  
  85.  
  86. pthread_create(&prodMlek, NULL, producentMleka, NULL);
  87. sleep(1);
  88. pthread_create(&prodKak, NULL, producentKakao, NULL);
  89. sleep(1);
  90. pthread_create(&konsum1, NULL, konsumentCzekolady, NULL);
  91.  
  92.  
  93. pthread_join(prodMlek, NULL);
  94. pthread_join(prodKak, NULL);
  95. pthread_join(konsum1, NULL);
  96.  
  97.  
  98.  
  99.  
  100. pthread_exit (NULL);
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement