Skip to content
Extraits de code Groupes Projets
Valider 57ad01e3 rédigé par Arnaud Lefebvre's avatar Arnaud Lefebvre
Parcourir les fichiers

Replace main.c

parent 1561674f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #9951 réussi
......@@ -13,7 +13,6 @@ FILE *file_in;
FILE *file_out;
char *f_in;
char *f_out;
//int number_lines;
int nthreads = 1;
buffer1 *buffer_1;
buffer2 *buffer_2;
......@@ -49,7 +48,7 @@ void *reading() {
buffer_1->can_stop = true;
pthread_mutex_unlock(&(buffer_1->mutex));
return EXIT_SUCCESS;
return NULL;
}
......@@ -76,20 +75,12 @@ void *calculating() {
buffer_2->can_stop = true;
pthread_mutex_unlock(&(buffer_2->mutex));
return EXIT_SUCCESS;
return NULL;
}
void *writing() {
/*
number_lines = count_lines(f_in);
while (number_lines > 0) {
number_lines -= 1;
*/
while(buffer_2->can_stop == false || buffer_2->prime_numbers->length > 0) {
sem_wait(&(buffer_2->full));
pthread_mutex_lock(&(buffer_2->mutex));
list_t *removed = get_node_lst(buffer_2->prime_numbers);
......@@ -105,9 +96,7 @@ void *writing() {
fprintf(file_out, "\n");
}
//printf("number_lines = %d \n", number_lines);
return EXIT_SUCCESS;
return NULL;
}
int main(int argc, char *argv[]) {
......@@ -169,6 +158,7 @@ int main(int argc, char *argv[]) {
printf("Read_thread_join OK.\n");
}
/*
for (int i = 0; i < nthreads; i++) {
if (pthread_cancel(calc[i]) != 0) {
printf("Error with cancel calculating thread[%d].\n", i);
......@@ -185,6 +175,22 @@ int main(int argc, char *argv[]) {
printf("Calc_thread_join[%d] OK.\n", i);
}
}
*/
for (int i = 0; i < nthreads; i++) {
if (pthread_cancel(calc[i]) != 0) {
printf("Error with cancel calculating thread[%d].\n", i);
if (pthread_join(calc[i], NULL) != 0) {
printf("Error with join calculating thread.\n");
return -1;
} else {
printf("Calc_thread_join[%d] OK.\n", i);
}
} else {
printf("Calc_thread_cancel[%d].\n", i);
}
}
if (pthread_join(write, NULL) != 0) {
printf("Error with join writing thread.\n");
......@@ -193,14 +199,12 @@ int main(int argc, char *argv[]) {
printf("Write_thread_join OK.\n");
}
fclose(file_in);
fclose(file_out);
printf("Files close.\n");
clear_list_t(buffer_1->numbers);
free(buffer_1->numbers);
//clear_list_lst(buffer_2->prime_numbers);
free(buffer_2->prime_numbers);
free(buffer_1);
......
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