Matt23

Threads zad 2

May 24th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <stdlib.h>
  5.  
  6. void* myFunction(void* tid) {
  7.     int id = *(int*) tid;
  8.     free(tid);
  9.     int* iters = malloc(sizeof(int));
  10.     *iters = rand() % 10001;
  11.    
  12.     for (int i = 1; i <= *iters; i++) {
  13.         printf("Watek %d, iteracja %d\n", id + 1, i);
  14.     }
  15.     pthread_exit(iters);
  16. }
  17.  
  18. int main() {
  19.     srand(time(NULL));
  20.     int threadsNumber = 10;
  21.  
  22.     pthread_t* threads = calloc(threadsNumber, sizeof(pthread_t));
  23.     int** return_vals = calloc(threadsNumber, sizeof(int*));
  24.  
  25.     for (int i = 0; i < threadsNumber; i++) {
  26.         int* temp = malloc(sizeof(int));
  27.         *temp = i;
  28.         pthread_create(&threads[i], NULL, myFunction, temp);
  29.     }
  30.  
  31.     for (int i = 0; i < threadsNumber; i++) {
  32.         pthread_join(threads[i], (void**) (return_vals + i));
  33.     }
  34.  
  35.     free(threads);
  36.    
  37.     long sum = 0;
  38.     for (int i = 0; i < threadsNumber; i++) {
  39.         sum += *return_vals[i];
  40.     }
  41.  
  42.     free(return_vals);
  43.     printf("Liczba iteracji: %ld\n", sum);
  44. }
Advertisement
Add Comment
Please, Sign In to add comment