Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. typedef struct {
  2. int n, i, j, counter;
  3. double percent;
  4. int **t1, **t2, **res;
  5. pthread_t *threads;
  6. }tk;
  7.  
  8. int n2 = t->n * t->n;
  9. for(int i = 0; i < n2; i++) {
  10. pthread_create(&(t->threads[i]), NULL, solve, (void *) t);
  11. }
  12.  
  13. for(int i = 0; i < n2; i++) {
  14. pthread_join(t->threads[i], NULL);
  15.  
  16. //it only prints the end result (100%) n2 times
  17. //printf("%f%%n", t->percent);
  18. }
  19.  
  20. void *solve(void *ptr) {
  21. pthread_mutex_lock(&mutex);
  22. tk *t;
  23. t = (tk*) ptr;
  24.  
  25. int sum = 0;
  26.  
  27. if(t->j == t->n) {
  28. t->i++;
  29. t->j = 0;
  30. }
  31.  
  32. for(int k = 0; k < t->n; k++) {
  33. sum = sum + t->t1[t->i][k] * t->t2[k][t->j];
  34. }
  35.  
  36. t->res[t->i][t->j] = sum;
  37. t->j++;
  38.  
  39. t->counter++;
  40.  
  41. t->percent = (t->counter * 100) / (t->n * t->n);
  42.  
  43. pthread_mutex_unlock(&mutex);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement