Grave pb pthread_create

cs_valoue Messages postés 72 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 13 mai 2011 - 13 juil. 2004 à 15:08
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 15 juil. 2004 à 16:29
Bonjour,

j'essaie d'utiliser dans mon projet la fonction pthread_create mais g des pb a la compil et je ne sais pas pourkoi.
Je developpe une classe C++ (donc pas de main dans cette classe).
Voici un extrait de mon code:

int recoitTrame(char * trame){
st.text = (char *)malloc(1024);
//creation d'un processus fils
pthread_t threadfils_id;
if (pthread_create(&threadfils_id,NULL,reception,(void *)&st) ==-1){
cout<<"pb lors de la création du thread\n";
}
int *resultat;
pthread_join(threadfils_id,(void **)&resultat);
cout<<"en sortie = "<<st.text<<"\n";
strcpy(trame,st.text);
return 0;
}

void *reception (void *st){
return NULL;
}

L'erreur qui m'est dit à la compil (g++ sous Linux) est:
"no matches converting function 'reception' to type void*(*)(void*)"

Cette erreur est dite sur la ligne qui fait l'appel pthread_create.
Je ne comprends pas où est mon erreur, g essayé de faire excatement comme dans des codes que g trouvé.
Auriez vous une idée ?????
Merci

Valoue

4 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 juil. 2004 à 02:40
y a t'il un prototype de la fct reception avant son utilisation dans create_thread ?
s'il n'y en a pas, le compilo prendra par défaut une fct qui retourne un int (et pas void* comme voulu).
0
cs_valoue Messages postés 72 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 13 mai 2011
15 juil. 2004 à 09:11
Merci de ta réponse.
Ben en fait g essayé de mettre la fonction "reception" avant la fonction qui contient l'apple de pthread_create, mais g toujours le même erreur.
J'ai l'impression d'avoir un pb dans l'appel, parce que l'erreur est:
"no matches converting function 'reception' to type void*(*)(void*)"
"candidates are: void* NomClasse::reception(void*)"

J'ai l'impression d'avoir un pb d'appel de la fonction "reception" dans pthread_create, une histoire de pointeur, ou un machin comme ça.
ça ne dit rien a personne ??
Valoue
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
15 juil. 2004 à 16:28
si la fct 'reception' fait parti d'une classe, elle doit être déclaré 'static' sinon cela ne marchera pas. si tu as besoin d'avoir accès aux membre de la classe, tu peux passer un pointeur 'this' comme param de la fct.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
15 juil. 2004 à 16:29
si la fct 'reception' fait parti d'une classe, elle doit être déclaré 'static' sinon cela ne marchera pas. si tu as besoin d'avoir accès aux membre de la classe, tu peux passer un pointeur 'this' comme param de la fct.
0
Rejoignez-nous