IIC2333 / foro-2019-1

Foro oficial del curso IIC2333 - Sistemas Operativos y Redes, semestre 2019-1.
2 stars 0 forks source link

Retorno de multiples pthreads #38

Closed Dunkan1 closed 5 years ago

Dunkan1 commented 5 years ago

Hola, tengo un problema en la tarea cuando quiero almacenar la respuesta de multiples pthreads. Basicamente lo que ocurre es lo siguiente:

tengo los siguientes maps con sus listas de palabras Screenshot from 2019-04-10 12-28-50

para almacenarlas hago

pthread_join(..., &respuesta[pid]);

con respuesta

void* respuesta[NUMBER_OF_THREADS];

pero cuando imprimo la respuesta obtengo lo siguiente Screenshot from 2019-04-10 12-32-14

como se puede ver los numeros y el largo de cada respuesta(9-10-10) se mantienen pero los strings cambian.

Alguien sabe porque podria ocurrir???

IchottMano commented 5 years ago

Hola!

Como lo haces para imprimir lo que recibe el reduce? En específico me gustaría ver como imprimes las palabaras, mas que los números asociados.

Saludos!

Dunkan1 commented 5 years ago

Claro Este imprime en el main

printf("--------------------ENVIADO A REDUCE-----------------------\n");
        lista_palabras** bli = (lista_palabras**) respuesta;
        for(int k = 0; k < pid; k++){
            bli[k] = (lista_palabras*) bli[k];
        }

        for(int j = 0; j < pid; j++){
            for(int s = 0; s < bli[j]->n; s++){
                printf("%s : %d\n", bli[j]->lista[s]->word, bli[j]->lista[s]->count);}
                printf("\n");}
        printf("----------------------------------------------------------\n");

Este para imprimir en el thread Map

for(int s = 0; s < lista_pal->n; s++){
        printf("%s : %d\n", lista_pal->lista[s]->word, lista_pal->lista[s]->count);}
    printf("\n");
    printf("\n");
IchottMano commented 5 years ago

Bueno, con esto probablemente el problema sea de como estas asignando los punteros para los strings de cada palabra.

Intenta revisar como van quedando las palabras cada vez que recibes la información de un thread, ya que posiblemente estes sobreescribiendo los punteros de las palabras viejas con palabras nuevas.

Si esto no resuelve tu problema, porfavor envíame un mail (reschilling@uc.cl) para poder ayudarte presencialmente.

Saludos!

Dunkan1 commented 5 years ago

Gracias, era efectivamente lo que decias, se estaban sobreescribiendo los punteros