Skip to content
Extraits de code Groupes Projets
Valider 4ef7e4dc rédigé par Laurent Paucot's avatar Laurent Paucot
Parcourir les fichiers

clarifiacations

parent 2a2c83d4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #4375 réussi
......@@ -62,9 +62,9 @@ sem_t full2;
void put_in_buffer_1(char *c, struct buffer_rc *ptr){ //ajouter un element dans le buffer 1
//ptr->tab[ptr->head] = malloc(sizeof(c)); // on stoxke de espace
ptr->tab[ptr->head] = c;
//strcpy(ptr->tab[ptr->head],c); //copie
ptr->tab[ptr->head] = malloc(sizeof(c)); // on stoxke de espace
//ptr->tab[ptr->head] = c;
strcpy(ptr->tab[ptr->head],c); //copie
ptr->len++; // augmente l'espace occupé par le buffer
ptr->head = (ptr->head + 1)%ptr->size; //chaque fois qu'un élément est ajouté,
//on augmente le pointeur de 1 mais l'espace du buffer est de 8 donc faire un modulo
......@@ -74,7 +74,7 @@ void put_in_buffer_1(char *c, struct buffer_rc *ptr){ //ajouter un element dans
char *get_from_buffer_1(struct buffer_rc *ptr){ // chercher dans le buffer 1
char *result;
result = ptr->tab[ptr->tail]; // donne un valeur a result
//free(*ptr->tab[ptr->tail]);
//free(ptr->tab[ptr->tail]);
ptr->tab[ptr->tail] = NULL;
ptr->len--; //diminue l'espace occupé par le buffer
ptr->tail = (ptr->tail + 1)%ptr->size;
......@@ -291,82 +291,55 @@ void sem_2_initializer (struct buffer_cw *buf){
}
int run (char *input,char *output){
FILE *file1 = NULL;
FILE *file2 = NULL;
file1 = fopen(input,"r");
if (file1 == NULL){return -1;}
file2 = fopen(output,"w+");
if (file2 == NULL){
fclose(file1);
return -1;
}
struct buffer_rc buffer_1;
//*buffer_1.tab = malloc(sizeof(char[8]));
for (int i = 0; i < 2*N; i++)
{
buffer_1.tab[i] = malloc(sizeof(char*));
}
buffer_1.size = 2*N;
buffer_1.len = 0;
buffer_1.head = 0;
buffer_1.tail = 0;
buffer_1.stop = 0;
//buffer_1.file1 = malloc(sizeof(file1));
buffer_1.file1 = file1;
struct buffer_rc * buff_init_1(FILE *file1){
struct buffer_rc *ptr1;
ptr1 = malloc(sizeof(struct buffer_rc));
if (ptr1 == NULL){
free(buffer_1.file1);
free(ptr1);
return -1;}
*ptr1 = buffer_1;
struct buffer_cw buffer_2;
return NULL;}
ptr1->size = 2*N;
ptr1->len = 0;
ptr1->head = 0;
ptr1->tail = 0;
ptr1->stop = 0;
ptr1->file1 = file1;
return ptr1;
}
buffer_2.size = 2*N;
buffer_2.len = 0;
buffer_2.head = 0;
buffer_2.tail = 0;
buffer_2.stop = 0;
buffer_2.file2 = file2;
struct buffer_cw * buff_init_2(FILE *file2){
struct buffer_cw *ptr2;
ptr2 = malloc(sizeof(struct buffer_cw));
if (ptr2 == NULL){
free(ptr1);
return -1;}
*ptr2 = buffer_2;
return NULL;}
ptr2->size = 2*N;
ptr2->len = 0;
ptr2->head = 0;
ptr2->tail = 0;
ptr2->stop = 0;
ptr2->file2 = file2;
return ptr2;
}
struct buffer_rccw *buff_init_12(struct buffer_rc *ptr1,struct buffer_cw *ptr2){
struct buffer_rccw buffer_12;
buffer_12.struct1 = ptr1;
buffer_12.struct2 = ptr2;
struct buffer_rccw *ptr3;
ptr3 = malloc(sizeof(struct buffer_rccw));
if (ptr3 == NULL){return -1;}
if (ptr3 == NULL){return NULL;}
*ptr3 = buffer_12;
return ptr3;
}
void thread_create_join(struct buffer_rc *ptr1,struct buffer_cw *ptr2,struct buffer_rccw *ptr3){
pthread_t reader;
pthread_t calculators[N];
pthread_t writer;
sem_1_initializer(ptr1);
sem_2_initializer(ptr2);
pthread_create(&reader,NULL,&reading,ptr1);
for (int i = 0; i < N; i++)
{
......@@ -380,7 +353,30 @@ int run (char *input,char *output){
pthread_join(calculators[i],NULL);
}
pthread_join(writer,NULL);
}
int run (char *input,char *output){
FILE *file1 = NULL;
FILE *file2 = NULL;
file1 = fopen(input,"r");
if (file1 == NULL){return -1;}
file2 = fopen(output,"w+");
if (file2 == NULL){
fclose(file1);
return -1;
}
struct buffer_rc *ptr1 = buff_init_1(file1);
struct buffer_cw *ptr2 = buff_init_2(file2);
struct buffer_rccw *ptr3 = buff_init_12(ptr1,ptr2);
sem_1_initializer(ptr1);
sem_2_initializer(ptr2);
thread_create_join(ptr1,ptr2,ptr3);
fclose(file1);
fclose(file2);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter