Salut J'ai le code C++ suivant,Comment faire une fonction de classe dérivée comme routine de démarrage d'un thread?
je classe MyThread dans le fichier thread.h
class MyThread
{
public:
void start();
virtual void* task() = 0;
};
Je classe des travailleurs dans le fichier worker.h
class Worker : public MyThread
{
virtual ~Worker();
virtual void* task(); // I have implementation in worker.cpp
};
Ont utilisé pthread_create()
dans le start()
dans thread.cpp
fichier pour créer un thread et je veux faire la routine task()
définie dans le w orker.cpp
comme routine de départ. Alors, comment puis-je faire ça? Que devrais-je transmettre en tant que paramètre à la routine de démarrage dans pthread_create
?
J'ai essayé, mais il donne une erreur:
pthread_create(&(this->threadId),&(this->attr),(void *)task,NULL);
voulez-vous vraiment utiliser 11 C++ comme votre balise suggère? Dans ce cas, vous pouvez vider pthread et utiliser les threads intégrés. – KillianDS
Le pointeur vers la fonction de classe-membre n'est en fait pas un pointeur sur la fonction. Et +1 pour les threads intégrés. – fasked
@KillianDS, la dernière construction de mingw officielle, autant que je sache, construit avec le support de fil desibled. – Lol4t0