#include
//structura cu parametrii fiecarui fir
typedef struct {
int x[30]; // stocare vector
int n; // numar maxim de elemente
} Parametri;
int x[30];
int n;
///// Functia primului fir
///// CITIREA
void* Citire(void *param )
{
int i; // contor
printf("\n Dati numaru de elemente a vectorului: ");
scanf("%d",&n);
for (i=0;i
printf("\n Dati element: %d=", i+1);
scanf("%d", &x[i]);
}
printf("\n");
return NULL;
}
//// functia ce va fi executata de cel de-al doilea fir.\
//// SORTAREA SI AFISAREA
void* Afisare(void )
{
int i, aux;
printf("\n Sortare vector ... \n");
for (i=0;i
if x[i]>x[i+1]
{
aux=x[i];
x[x]=x[i+1];
x[i+1]=aux;
}
printf("\n Sortare incheiata. ");
printf("\n Afisare - vectorul este :\n");
for (i=0;i
printf(" %d ",x[i]);
}
printf("\n");
return NULL;
}
///// functia efectuata de firul 3
///// media valorilor
void* Suma(void * param)
{
int i,med,a,b,nr;
long S;
S=0;
for (i=0;i
printf("\n Suma elementelor este %ld",S);
med=S/n;
printf("\n Media elem. vectorului este: %d ",med);
printf("\n Dati intervalele a, b ");
printf("\n a= ");
scanf("%d", &a);
printf("\n b=");
scanf("%d", &b);
for (i=0;i
nr++;
printf("\n in intervalul [a,b], sunt%ld",S);
return NULL;
}
int main()
{
pthread_t f1,f2,f3; //declararea firelor
int rc,status;
pthread_attr_t attr;
Parametri sp;
//// crearea primului fir
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
rc = pthread_create(&f1, &attr, &Citire, (void *) &sp);
/// se asteapta incheierea executiei primului fir
pthread_attr_destroy(&attr);
rc=pthread_join(f1, (void **)&status);
///se creaza al doilea fir
pthread_create(&f2, &attr, Afisare, (void *) &sp);
rc=pthread_join(f2, (void **)&status);
/// se creaza al treilea fir
pthread_create(&f3, &attr, Suma, &sp);
rc=pthread_join(f3, (void **)&status);
return 0;
}
No comments:
Post a Comment