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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager