Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.19 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<pthread.h>
  3. #include<semaphore.h>
  4. #include <stdlib.h>
  5.  
  6. #define P sem_post
  7. #define V sem_wait
  8.  
  9.  
  10. sem_t case_vide;
  11. sem_t case_pleine;
  12.  
  13. void* lire(void* data);
  14. void* ecrire(void* data);
  15. int buffer[5];
  16. int iDepot;
  17. int iExtrait;
  18.  
  19. void* lire(void* data)
  20. {
  21.     for(int i = 0; i < 10; i++)
  22.     {
  23.         P(&case_pleine);
  24.         {
  25.             printf("lu: %d ", buffer[iExtrait]);
  26.             iExtrait ++;
  27.             iExtrait %= 5;
  28.             sleep(0.7);
  29.         }
  30.  
  31.         V(&case_vide);
  32.     }
  33. }
  34.  
  35. void* ecrire(void* data)
  36. {
  37.     for(int i = 0; i < 10; i++)
  38.     {
  39.         P(&case_vide);
  40.         {
  41.             printf("Ecris");
  42.             buffer[iDepot] = iDepot;
  43.             iDepot ++;
  44.             iDepot %= 5;
  45.             sleep(0.5);
  46.         }
  47.         V(&case_pleine);
  48.     }
  49. }
  50.  
  51. int main()
  52. {
  53.     //Variables
  54.     char a;
  55.     iDepot = 0;
  56.     iExtrait = 0;
  57.  
  58.     //Gestion des threads
  59.     pthread_t thr_lire;
  60.     pthread_t thr_ecrire;
  61.     sem_init(&case_vide, 5, 0);
  62.     sem_init(&case_pleine,0, 5);
  63.  
  64.     pthread_create(&thr_ecrire, NULL, ecrire, NULL);
  65.     pthread_create(&thr_lire, NULL, lire, NULL);
  66.  
  67.     printf("%c",a);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement