Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <stdbool.h>
  5. #include <pthread.h>
  6.  
  7. int IDwatkow = 0;
  8.  
  9. pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
  10. pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
  11.  
  12. bool Pierwsze(int number)
  13. {
  14. int id;
  15. if(!pthread_mutex_lock(&mutex1)){
  16. pthread_mutex_unlock(&mutex1);
  17. id = IDwatkow+1;
  18. IDwatkow++;
  19.  
  20.  
  21. }
  22. else if(!pthread_mutex_unlock(&mutex1)){
  23. pthread_mutex_lock(&mutex1);
  24. id = IDwatkow+1;
  25. IDwatkow++;
  26.  
  27.  
  28. }
  29. if(number<=1) return false;
  30. int i;
  31. for(i=2; i<number; i++) if(number%i == 0){ return false;}
  32. else{
  33. printf("|%d|\n", id);
  34. return true;
  35. }
  36. }
  37.  
  38. void* pierwsze_watek(void* ptr){
  39.  
  40. bool* qwe;
  41. qwe = (bool*) malloc(sizeof(bool));
  42. qwe = (bool*)Pierwsze(atoi((char*)ptr));
  43. pthread_exit(qwe);
  44.  
  45. }
  46.  
  47. int main(int argc, char **argv){
  48. pthread_mutex_unlock(&mutex1);
  49. pthread_mutex_lock(&mutex2);
  50. pthread_t* watek = (pthread_t*) malloc((argc) * sizeof(pthread_t));
  51. void **liczba = malloc(argc * sizeof(void*));
  52.  
  53.  
  54. for(int i=1;i<argc;i++){
  55. pthread_create(&watek[i], NULL, pierwsze_watek, (void *)argv[i]);
  56. }
  57.  
  58. for(int i=1;i<argc;i++){
  59. pthread_join(watek[i],&liczba[i]);
  60. }
  61.  
  62. for(int i=1;i<argc;i++){
  63. if((bool*)liczba[i]) printf("%s\n ",argv[i]);
  64. }
  65.  
  66. free(watek);
  67. free(liczba);
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement