Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #include <unistd.h>
  8. #include <pthread.h>
  9.  
  10. int arr[10];
  11. pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
  12. pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
  13.  
  14. void* writeEvensToFile(void* args){
  15.  
  16. pthread_mutex_lock(&mutex1);
  17. int filedesc = open("nums.txt", O_CREAT | O_RDWR | O_APPEND , 0777);
  18.  
  19. float bac = *(float*)args;
  20. printf("bac: %f\n", bac);
  21.  
  22. char buff;
  23. for(int i = 0 ; i < 10 ; i++){
  24. if(arr[i] % 2 == 0){
  25. buff = arr[i] + '0';
  26. write(filedesc, &buff, 1);
  27. write(filedesc, "\n", sizeof("\n"));
  28.  
  29. }
  30. }
  31. close(filedesc);
  32.  
  33. pthread_mutex_unlock(&mutex2);
  34. }
  35.  
  36. void* writeOddsToFile(void* args){
  37. pthread_mutex_lock(&mutex2);
  38. int filedesc = open("nums.txt", O_CREAT | O_RDWR | O_APPEND , 0777);
  39.  
  40. char buff;
  41. for(int i = 0 ; i < 10 ; i++){
  42. if(arr[i] % 2 != 0){
  43. buff = arr[i] + '0';
  44. write(filedesc, &buff, 1);
  45. write(filedesc, "\n", sizeof("\n"));
  46.  
  47. }
  48. }
  49. close(filedesc);
  50.  
  51. pthread_mutex_unlock(&mutex1);
  52. }
  53.  
  54. int main(){
  55. for(int i = 0 ; i < 10 ; i++){
  56. arr[i] = i;
  57. }
  58. float x = 10.0;
  59. int which;
  60.  
  61. pthread_t id;
  62. pthread_t id2;
  63.  
  64. printf("Which thread do you want to start, 1 for even\n");
  65. scanf("%d", &which);
  66.  
  67. //mutex1 pou even;
  68. //mutex2 pou odd;
  69. pthread_mutex_lock(&mutex1);
  70. pthread_mutex_lock(&mutex2);
  71.  
  72.  
  73. pthread_create(&id, NULL, writeEvensToFile, &x);
  74. pthread_create(&id2, NULL, writeOddsToFile, NULL);
  75.  
  76. if(which == 1){
  77. pthread_mutex_unlock(&mutex1);
  78. sleep(1);
  79. }
  80. else{
  81. pthread_mutex_unlock(&mutex2);
  82. sleep(1);
  83. }
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement