Bonsoir,
J'avoue ne pas du tout être habitué au développement multi-thread, aussi je ne comprends pas beaucoup comment arriver à mes fins.
Le code ci dessous lance un thread qui boucle, en attendant que le champ "valeur" passe à 0. Ceci était facilement faisable avec un héritage de sf::Thread dans l'ancienne version de SFML.
Mais maintenant le constructeur de sf::Thread prend en paramètre une copie de l'objet-foncteur. Je n'ai plus la main sur le champ "valeur" qu'il faut et je ne peux plus arrêter ma boucle.
class MaClasse
{
public:
// Constructeur
MaClasse(int p) : valeur(p) {}
// Point d'entrée
void operator()()
{
while(valeur != 0)
std::cout << "P doit valoir 0 pour quitter" << std::endl;
}
// Champ interne
int valeur;
};
int main(int argc, char* argv[])
{
MaClasse vClasse = 10;
sf::Thread vThread(vClasse);
vThread.launch();
vClasse.valeur = 0;
return 0;
}
Je me demande donc.. comment modifier les valeurs de l'objet MaClasse de mon thread depuis le main ?
A plus tard