Passage de deux pointeurs à un pthread
Bonjour !
Etant en cure intensive de désingletonisation, j'ai besoin de passer plus paramètres à un pthread!
Or, la fonction qui lance les thread n'en prend qu'un seul, donc:
Code:
1 2 3 4 5
| struct PtrCollection
{
SessionsCollection* sc;
Selector* sl;
}; |
La fonction qui lance le thread:
Code:
1 2 3 4 5 6 7 8 9
|
// Threads
PtrCollection* pc = (PtrCollection*)malloc(sizeof(PtrCollection*)) ;
pc->sc = (SessionsCollection*)malloc(sizeof(SessionsCollection*));//sessions;
pc->sc = sessions;
pc->sl = (Selector*)malloc(sizeof(Selector*));//sessions;
pc->sl = selector;
pthread_create(&t_networker, NULL, Networker, pc); |
Rien que ici, je me dis que ya un gros problème au niveau de la conception de mon problème...
Et c'est evident que le passage ne marche pas, crash au démarrage du thread.
Cette solution est-elle convenable?
Faudrait-il que je fasse une classe mère à chaque classe (ici: SessionsCollection & Selector) et une classe de collection contenant un vector<classMere>, et que dans mon thread je puisse faire:
Code:
1 2
| classDeCollection* cdc = reinterpret_cast<classDeCollection*>(argument)
Selector* sl = cdc->get(0); // retourner le vecteur.at(0); |