PDA

View Full Version : creazione thread in C


paplo
30-04-2002, 10:48
Ciao,

per l'ennesima volta vi chiedo un aiuto...

compilando il programma che ho allegato, risultano sempre degli errori di incompatibilitą del tipo della startroutine.

ho confrontato il mio programma con i numerosi esempi che si trovano in rete, ma non sono riuscito a risolvere.

l'unica salvezza siete voi! AIUTO!!!

Vi ringrazio per qualsiasi suggerimento!

Ciao,
Paplo

/\/\@®¢Ų
30-04-2002, 15:45
pthread_create chiede come terzo parametro una funzione che accetti void* e ritorni void*.
tu invece le passi una funzione che chiede int* come argomento.

La soluzione puo' essere quella di riscrivere la funzione cambiando il tipo dei paratetri e facendo una conversione forzata:

void *player(void* arg)
{
int me =(int) *arg;
<cut>
}


Oppure in alternativa ( piu' corretta ) puo' essere quella di lasciare la funzione cosi' come e' e forzare la conversione del puntatore al momento di chiamare pthread_create, pero' non chiedermi la sintassi, che non mi ricordo mai come fare i cast dei puntatori a funzione :D :(, comunque la notazione e' molto scomoda.
In alternativa scrivi

void* player_void ( void* arg )
{ return player( (int*) arg );
}

che salva capra e cavoli :D.

/\/\@®¢Ų
30-04-2002, 15:49
dimenticavo...

la chiamata a pthread_create e' comunque sbagliata nel tuo codice , visto che passi come quarto parametro un argomento inesistente.
Li' il problema si risolve subito:

int uno;

...

uno = 1;
pthread_create( ..... , &uno );