vim three_creads.c
#include <math.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define max 100
struct int_params
{
int int_value;
int count;
};
struct double_params
{
double double_value;
int count;
};
struct char_params
{
char char_value;
int count;
};
int *int_tab;
char *char_tab;
double *double_tab;
void init_Tables()
{
int i;
int_tab=(int*) calloc (max,sizeof(int));
char_tab=(char*) calloc(max,sizeof(char));
double_tab=(double*) calloc(max,sizeof(double));
for(i=0;i<max;i++)
{
int_tab[i]=i+1;
char_tab[i]='=';
double_tab[i]=sqrt(1.*int_tab[i]);
}
}
void delete_Tables()
{
free(double_tab);
free(char_tab);
free(int_tab);
}
void *int_Print(void *value)
{
int i;
struct int_params *temp=(struct int_params*) value;
for(i=0;i<temp->count;i++)
{
printf("%d ",temp->int_value);
printf("\n");
}
return NULL;
}
void *char_Print(void *value)
{
int i;
struct char_params *temp=(struct char_params*) value;
for(i=0;i<temp->count;i++)
{
printf("%c ",temp->char_value);
printf("\n");
}
return NULL;
}
void *double_Print(void *value)
{
int i;
struct double_params *temp=(struct double_params*) value;
for(i=0;i<temp->count;i++)
{
printf("%.2f ",temp->double_value);
printf("\n");
}
return NULL;
}
pthread_t int_id,char_id,double_id;
int main()
{
int i;
init_Tables();
struct int_params i_P[max];
struct char_params c_P[max];
struct double_params d_P[max];
for(i=0;i<max;i++)
{
i_P[i].int_value=int_tab[i];
i_P[i].count=max;
c_P[i].char_value=char_tab[i];
c_P[i].count=max;
d_P[i].double_value=double_tab[i];
d_P[i].count=max;
}
pthread_create(&int_id,NULL,&int_Print,&*i_P);
pthread_create(&char_id,NULL,&char_Print,&*c_P);
pthread_create(&double_id,NULL,&double_Print,&*d_P);
pthread_join(int_id,NULL);
pthread_join(char_id,NULL);
pthread_join(double_id,NULL);
delete_Tables();
return 0;
}
gcc -o three_creads three_creads.c -lpthread -lm
Brak komentarzy:
Prześlij komentarz