Je joue avec C++ et pthreads et jusqu'ici tout va bien. Je peux accéder à une fonction de membre de classe si elle est statique et j'ai lu que je peux accéder à une fonction membre de classe normale si je transmets "this" comme argument avec pthread_create, car C++ le fait sous le capot. Mais mon problème est que je veux donner un int à cette fonction, et je ne sais pas comment faire plusieurs arguments avec pthread_create.pthreads et C++
1
A
Répondre
6
Passez un pointeur struct.
struct Arg {
MyClass* _this;
int another_arg;
};
...
Arg* arg = new Arg;
arg->_this = this;
arg->another_arg = 12;
pthread_create(..., arg);
...
delete arg;
0
vous pouvez stimuler la bibliothèque de fil et utiliser boost :: bind() Voici un exemple
class MyThread
{
public:
MyThread(/* Your arguments here */) : m_thread(NULL)
{
m_thread = new boost::thread(boost::bind(&MyThread::thread_routine, this));
}
~MyThread()
{
stop();
}
void stop()
{
if (m_thread)
{
m_thread->interrupt();
m_thread->join();
}
}
private:
void thread_routine() {... /* you can access a/b here */}
private:
int a;
int b;
boost::thread *m_thread;
};
Questions connexes
- 1. posix pthreads dans c
- 2. C Pthreads valeurs de mutex?
- 3. Erreur de compilation Pthreads C++
- 4. Deadlocks avec pthreads et CreateThread
- 5. problème Pthreads et quelques questions
- 6. Compilation en C++ avec mysql, pthreads et gtk
- 7. Comment paralléliser les threads dans C pthreads
- 8. Démarrage simultané des pthreads
- 9. Pinning pthreads memory and cpu
- 10. pthreads: nombre autorisé de threads
- 11. Création d'un fil de tirage indépendant utilisant pthreads (C++)
- 12. Utilisation de pthreads sur deux fonctions en C
- 13. pthreads de blocage producteur-consommateur
- 14. Un pool de threads très simple utilisant pthreads en C++
- 15. Liaison statique avec pthreads & stdC++?
- 16. pthreads - comment paralléliser un travail
- 17. Utilisation de gprof avec pthreads
- 18. Interruption de minuterie pour pthreads
- 19. Utilisation pthreads dans VS .NET 2003
- 20. Comment exécutez-vous plusieurs pthreads, en C, et détecter le premier à se terminer?
- 21. pthreads: incohérence entre gcc et icc sous Linux
- 22. comportement de pthreads et de la fonction pthread_join
- 23. pthreads compile mais binaire n'est pas créé
- 24. consommation de mémoire virtuelle de pthreads
- 25. Aide requise pour le débogage de pthreads
- 26. Erreur de bus sur OSX - pthreads
- 27. Plate-forme (non-Windows) sans support pthreads
- 28. Comment utiliser en toute sécurité les paramètres dans les threads, en utilisant C++ & Pthreads?
- 29. Quel est le problème avec la liaison des bibliothèques Pthreads au fichier .c dans MSVC++ 6?
- 30. De façon réaliste, quelle fonctionnalité pthreads est généralement utilisée?
Que dois-je faire avec les _this dans la fonction C++? Rien? – vincentkriek
@user: Pour "accéder à un membre normal de la classe". – kennytm
Je pense que je n'étais pas clair, de laisser pthread_create exécuter les fonctions C++ dont ils ont besoin pour être statiques. Je voudrais qu'ils ne soient pas statiques, si c'est possible. – vincentkriek