Bonjour,
j'ai le probleme suivant a regler en C++
je travaille sur les threads sous linux, avec la librairie "pthread"
Lorsque je crée un thread, celui ci doit exectuer une fonction membre d'un classe mais Ce n'est pas ce
point là qui me pose probleme. Le soucis est que cette fonction membre qui doit etre lancé prend en
parametre des attributs d'une autre classe, et me renvoie en fin de triatement un pointeur sur une
classe encore différente, et ce sont ces deux dernieres chose que je ne parvient pas a faire. C'est à
dire que je ne sais pas comment envoyer à ma fonction les parametres en entrée, ni comment recuperer mon
resultat.
Pour appeller ma fonction membre je procede de la maniere suivante :
class pairint{
public:
pairint(int, int);
~pairint() {};
void add();
void printpair();
private:
int _x;
int _y;
};
pairint::pairint(int x, int y) {
_x = x;
_y = y;
};
void pairint::add() {
cout << "sum of pair is "<< _x+_y << "\n";
};
void pairint::printpair() {
cout << "value of x is " << _x << "\n";
cout << "value of y is " << _y << "\n";
};
extern "C" void *ThreadStartup(void *);
int main(int argc, char **argv)
{
pairint *t=NULL;
pthread_t thread;
int rc;
t = new pairint(5,10);
rc = pthread_create(&thread, NULL, ThreadStartup, (void *)t);
if (rc) {
cout << "Failed to create a thread" << "\n";
exit(EXIT_FAILURE);
}
printf("Waiting for thread to complete\n");
rc = pthread_join(thread, NULL);
if (rc) {
cout << "Failed to joint a thread" << "\n";
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
void *ThreadStartup(void *_tgtObject) {
pairint *tgtObject = (pairint *)_tgtObject;
tgtObject->add();
delete tgtObject;
return (NULL);
}
Ici c'est un exemple simple. Mais ce que je cherche a faire, c'est passer des arguments a la fonction
ThreadStartup qui n'appartiennent pas a la classe "pairint". Et je voudrais aussi recuperer un pointeur
sur une classe en retour.
Voila, si quelqu'un a une idée je le remercie par avance.