Précision sur fonction static d'une classe pour Thread
Voilà j'ai codé une classe composée d'un socket en attribut.
Je dois créer un thread dans le main qui reçoit en parallèle des informations sur le socket.
Le problème est que pour créer ce thread je dois passer ma méthode rcv() en static void... Mais qui dit static dit perte des attributs de l'instance de classe !
J'ai donc une question : Quelle est la meilleure stratégie à employer pour pouvoir utiliser mes attributs au sein de ma classe et être sûr qu'ils seront bien modifiés en parallèle dans l'objet instancé dans mon main ?
Passer mon objet en référence ? Ce dont j'ai peur c'est que ce thread modifie un tableau dynamique attribut de mon objet... Est-ce que pour autant si je regarde l'état du tableau dans le main il aura bien été modifié en temps réel par le thread ?
Exemple en pseudo code pour pas piquer les yeux :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class objet{
private :
std::vector bidon
public:
void setvector(int);
std::vector getvector();
static void rcv(objet) //Thread qui reçoit constamment des informations en parallèle
}
int main()
{
objet obj;
obj.setvector(5);
thread(obj.rcv(&obj)); //Modifie le vector au bout de 1 seconde en ajoutant 3
sleep(2);
obj.setvecor(8);
cout << obj; //5 3 8 ?
return 1;
} |
Merci beaucoup :) !