Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define N 10
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- double sum=0;
- typedef struct {
- int x;
- int i;
- }argument;
- int silnia(int n) {
- if (n == 0) return 1;
- if (n == 1) return 1;
- return n*silnia(n-1);
- }
- void* obliczIloczyn(void* ptr)
- {
- argument* arg = ptr;
- int dol = silnia(arg->i);
- double gora = pow((double)arg->x,(double)arg->i);
- //printf("gora: %f\n",gora);
- //printf("dol: %d\n",dol);
- double dziel = (double)gora / (double)dol;
- double* suma = malloc(sizeof(double));
- *suma = dziel;
- pthread_mutex_lock(&mutex);
- sum+=*suma;
- pthread_mutex_unlock(&mutex);
- printf("suma: %f\n",*suma);
- //mutex[arg->i] = (pthread_mutex_t)*suma;
- }
- int main()
- {
- double* result[N];
- int i;
- pthread_t watki[N];
- for(i=0;i<N;i++)
- {
- argument* arg= malloc(sizeof(argument));
- arg->x = 1;
- arg->i = i;
- pthread_create(&watki[i], NULL, obliczIloczyn, arg);
- usleep(300);
- }
- for(i=0;i<N;i++)
- {
- pthread_detach(watki[i]);
- }
- printf("Wynik: %f\n",sum);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement