La Red de Conocimientos Pedagógicos - Currículum vitae - En el sistema Linux, problema de paso de parámetros en la programación multiproceso pthread en lenguaje C

En el sistema Linux, problema de paso de parámetros en la programación multiproceso pthread en lenguaje C

¿Los tres hilos usan la misma información?

El código Info_t *info?= (Info_t *)malloc(sizeof(Info_t)); >

p>

pthread_create(amp; threads[i], NULL, calMatrix, (void *)info); Los tres hilos usan el mismo

Cambié tu código: # include); ?lt;stdio.hgt;

#include?lt;stdlib.hgt;

#include?lt;pthread.hgt;

int?mtc [ 3]?=?{?0?};?//?result?matrix

typedef?struct

{

int?prank;

p>

int?*mta;?

int?*mtb;

}Info_t;

void*?calMatrix(void *?arg)

{

int?i;

Info_t?*info?=?(Info_t?*)arg;

int?broma ?=?info-gt;broma;

fprintf(stdout, "calMatrix?:?broma?is?d\n",broma);

for( i?=? 0;?i?lt;?3;?i )

mtc[broma]? =?info-gt;mta[i]?*?info-gt;mtb[i] ;

return?NULL;

}

int?main(int?argc, char?**argv)

{

int?i,j,k?=?0;

int?mta[3][3];

int?mtb[3]?= ?{?1 ?};

Info_t?*info?=?(Info_t?*)malloc(tamañode(Info_t)*3);

for(i?=?0 ;?i? lt;?3;?i )

for(j?=?0;?j?lt;?3;?j )

mta[i][ j]?= ?k ;

/*?3?threads?*/

pthread_t?*threads?=?(pthread_t?*)malloc(sizeof(pthread_t)*3 );

p>

fprintf(stdout, "\n"); fflush(stdout);

for(i?=?0;?i?lt;?3;? i)

{

info[i].broma?=?i;

info[i].mta?=?mta[i];

info[i].mtb?=?mtb;

pthread_create(amp; threads[i], NULL, calMatrix, (void?*)(amp; info[i]) );

}

for(i?=?0;?i?lt;?3;?i)

pthread_join(threads[i], NULL);

fimprimir

f(stdout, "\n====?la?matriz?resultado?====\n\n");

fflush(stdout);

for( i?=?0;?i?lt;?3;?i )

{

fprintf(stdout, "mtc[d]?=?d\n",i , mtc[i]);

fflush(stdout);

}

return?0;

}

Olvidé el cálculo de la matriz, ejecútelo y vea si el resultado es correcto