Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <pthread.h>
  4.  
  5. int primes[1000];
  6. int curr_p=0;
  7. pthread_mutex_t m_p;
  8.  
  9. void *prime(void* arg){
  10. int number = *((int*)arg);
  11. for(int i = 3; i < number; i++)
  12. if(number % i == 0){
  13. free(arg);
  14. return NULL;
  15. }
  16.  
  17. /*printf("%d\n", number); */
  18.  
  19. pthread_mutex_lock(&m_p);
  20. primes[curr_p++] = number;
  21. pthread_mutex_unlock(&m_p);
  22.  
  23. free(arg);
  24. return NULL;
  25. }
  26.  
  27. int main(int argc, char **argv) {
  28.  
  29. int n = atoi(argv[1]);
  30.  
  31. pthread_mutex_init(&m_p, NULL);
  32.  
  33. pthread_t w[10000];
  34. for(int i = 2; i < n; i++){
  35. int* x = (int*) malloc(sizeof(int));
  36. *x = i;
  37. pthread_create(&w[i], NULL, prime, x);
  38. }
  39.  
  40. for(int i = 2; i < n; i++){
  41. pthread_join(w[i], NULL);
  42. }
  43.  
  44. for(int i = 0; i < curr_p; i++){
  45. printf("%d\n", primes[i]);
  46. }
  47.  
  48. pthread_mutex_destroy(&m_p);
  49.  
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement