Bonjour,
j'ai créé une classe qui lors de son instenciation crée un thread lui correspondant. Or j'ai un probleme a la compilation:
Il semble que ce probleme soit lié au faite que la bibliotheque pthread (posix) soit ecrite en C et que les threads posix ne gerent pas le C++ (c'est ce que j'ai lu sur un forum anglophone) Dans ce meme forum, il etait conseillé de déclarer une fonction globale pour appeler le thread.Code:error: argument of type 'void* (Trs232::)(void*)' does not match 'void* (*)(void*)'
Mon probleme: La fonction qui appelle le thread est appelée par le constructeur, donc celle la je peux la mettre en globale avec une declaration d'amitié dans la classe, mais le contenu de mon thread, vu qu'il doit etre particulier a chaque instence de classe, je fais comment?
mon code:
La fonction threadée:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int Trs232::init_thread() ///Renvoie O si création du thread ok, 1 si Erreur. { int erreur; int tid=1; // ca c'est juste un id que j'ai mis a 1 pour l'instant je vais le faire //correspondre au nombre d' instencie par la suite erreur = pthread_create (&thread_com, NULL, recep_loop, (void*)tid); return erreur; }
ben merci pour vos lumieres :o)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void* Trs232::recep_loop(void *threadid) { int Result; char* pChaine; int tid; // inutile pour le moment tid = (int)threadid; do { Result=Hard_Rx(pChaine); if (Res > 0) { Write_Buffer_Rx(pChaine); } } while (true); }
++ Dom