Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5.  
  6. int rozmiar_tab;
  7. int odp1=0;
  8. int suma=0;
  9.  
  10. void *thread_function(void *arg) {
  11.  
  12.  
  13. static int i=0;
  14. int a=0;
  15. int odp1=0;
  16.  
  17.  
  18. int* tablica = (int*)arg;
  19.  
  20.  
  21.  
  22. sleep(tablica[i]+1);
  23. suma=0;
  24. for(i; i<rozmiar_tab; i++){
  25. a++;
  26. odp1 = tablica[i]*tablica[i];
  27. printf ("element %d do potęgi to %d\n",tablica[i],odp1);
  28. suma+=odp1;
  29. if(a==2) break;}
  30.  
  31.  
  32. i++;
  33. printf("suma to %d\n",suma);
  34.  
  35.  
  36.  
  37. pthread_exit(&suma);
  38.  
  39. return NULL;
  40.  
  41.  
  42.  
  43. }
  44.  
  45. int main(int argc, char **argv)
  46. {
  47. rozmiar_tab=(argc-1);
  48. int i;
  49. if (argc==1){
  50. printf("Podaj liczby do obliczenia\n");
  51. return 1;
  52. }
  53.  
  54. for (i=0;i<(argc-1);i++)
  55. {
  56. if (atoi(argv[i+1])==0)
  57. {
  58. printf("Podaj wartosci liczbowe\n");
  59. return 1;
  60. }
  61. }
  62.  
  63. int tablica[argc-1];
  64. for (i = 0; i < argc-1; i++)
  65. {
  66. tablica[i]=atoi(argv[i+1]);
  67.  
  68. printf("tablica[%d] = %d\n", i, tablica[i]);
  69. }
  70.  
  71. int n=((sizeof tablica)/4);
  72. printf ("size %d\n",n);
  73. if(n%2==1){tablica[n+1]=0;}
  74. printf ("tab%d\n%",tablica[n+1]);
  75. n=((sizeof tablica)/4);
  76. printf ("size %d\n",n);
  77.  
  78. int argumenty=argc-1;
  79. printf ("ilosc argumentow= %d\n",argumenty);
  80. if (argumenty%2==1){
  81. argumenty=(argumenty+1)/2;
  82. printf("liczba watkow = %d\n",argumenty);}
  83. else {
  84. argumenty=argumenty/2;
  85. printf("liczba watkow = %d\n",argumenty);}
  86.  
  87.  
  88. int COUNT=argumenty;
  89.  
  90. int err;
  91.  
  92. int cnt;
  93.  
  94. pthread_t p_thread[COUNT];
  95.  
  96. int *odp[2];
  97.  
  98.  
  99. for(cnt = 0; cnt < COUNT; cnt++){
  100.  
  101.  
  102.  
  103. pthread_create(&p_thread[cnt], NULL, thread_function, &tablica[cnt]);
  104.  
  105.  
  106.  
  107. }
  108.  
  109. for(cnt = 0; cnt < COUNT; cnt++) {
  110.  
  111. pthread_join(p_thread[cnt], (void **)&(odp[cnt]));
  112. int wynik_w=0;
  113. wynik_w=*odp[cnt];
  114. printf("wynik watku to: %d\n",wynik_w);
  115. static int razem=0;
  116. razem=razem+wynik_w;
  117. printf("wynik ogolny to: %d\n",razem);
  118. }
  119.  
  120.  
  121. return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement