Bonjour à tous,
je viens de me heurter à un problème dont les seules solutions que je vois sont absolument horribles au point de vue conception, c'est pour ça que je fais appel à votre aide .
Comme indiqué dans le titre, je cherche à exécuter des fonctions depuis un thread, en les lançant depuis le thread principal. J'explique la nécessité de faire cela : je code un petit wrapper pour coder en Opengl en utilisant le fenêtrage et les événements SDL, du coup vu que je veux qu'on puisse faire du multi fenêtrage et du multi vue dans chaque fenêtre, j'ai besoin de créer mes fenêtres dans l'unique thread graphique qui tourne. Sauf que je dois pouvoir créer des fenêtres depuis le thread principal. Du coup je dois appeler quelque chose du genre graphicalThread.addWindow(...); et graphicalThread ajoute la fenêtre dans sa boucle run. Cela implique de sauvegarder les arguments lors de l'appel à la fonction addWindow de graphicalThread.
C'est donc extrêmement laid, car je n'ai pas une seule fonction, mais une vingtaine, donc autant de "tuple" d'arguments à enregistrer.
Voyez-vous une solution propre ?
Edit : Evidemment, il faut que sitôt après avoir posté le message j'aie l'idée d'une solution qui me paraisse bien meilleure (je ne sais pas pourquoi écrire tuple m'a fait penser à ça), mais dites moi quand même ce que vous en pensez : lorsqu'on appelle addWindow, on ajoute une std::function f correspondant à la fonction qu'on souhaite appeler en lui bindant ses arguments, comme ça on n'a plus qu'à appeler f() dans l'update.
Partager