|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
|
creazione thread in C
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
__________________
Età : 28 - Sviluppatore PHP |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
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 ![]() ![]() In alternativa scrivi void* player_void ( void* arg ) { return player( (int*) arg ); } che salva capra e cavoli ![]() |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
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 ); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:13.