Threader les methodes d un objet - C++ - Programmation
MarshPosté le 12-05-2008 à 14:04:32
Bonjour,
Alors je ne suis pas tellement certain que mon titre soit tres explicite. Voila mon probleme :
J ai un objet Mesh qui implemente tout un tas de methodes sympatiques mais longues. J ai un objet MeshRenderable qui copie le Mesh dans une structure pour openGL et qui est utilise par mon GUI.
Je souhaite pouvoir appeler les methodes de Mesh dans un thread, puis a la sortie de ce thread mettre a jour le MeshRenderable.
Pour l instant je fais ca de maniere assez crade. Etant sous QT je cree pour chaque methode de Mesh que je souhaite appeler une classe heritée de QThread.
D ou la question : quelle est la bonne facon de prendre un objet, de ne pas toucher a son code, et de l encapsuler de maniere a acceder a lui et ses methodes dans des threads, et de deleter les objets threads une fois qu ils ont fini.
Merci
edit : C etait vraiment debile d initialiser un thread a chaque fois. Ma nouvelle approche est d avoir une classe abstraite IJob avec une methode virtuelle pure void run(); et de passer ces objets a un ThreadedWorker qui les fout sur une queue et la traite a chaque appel de start. Je suis vraisemblablement un poil plus proche de la "bonne facon de faire".
Marsh Posté le 12-05-2008 à 14:04:32
Bonjour,
Alors je ne suis pas tellement certain que mon titre soit tres explicite. Voila mon probleme :
J ai un objet Mesh qui implemente tout un tas de methodes sympatiques mais longues. J ai un objet MeshRenderable qui copie le Mesh dans une structure pour openGL et qui est utilise par mon GUI.
Je souhaite pouvoir appeler les methodes de Mesh dans un thread, puis a la sortie de ce thread mettre a jour le MeshRenderable.
Pour l instant je fais ca de maniere assez crade. Etant sous QT je cree pour chaque methode de Mesh que je souhaite appeler une classe heritée de QThread.
D ou la question : quelle est la bonne facon de prendre un objet, de ne pas toucher a son code, et de l encapsuler de maniere a acceder a lui et ses methodes dans des threads, et de deleter les objets threads une fois qu ils ont fini.
Merci
edit :
C etait vraiment debile d initialiser un thread a chaque fois. Ma nouvelle approche est d avoir une classe abstraite IJob avec une methode virtuelle pure void run(); et de passer ces objets a un ThreadedWorker qui les fout sur une queue et la traite a chaque appel de start. Je suis vraisemblablement un poil plus proche de la "bonne facon de faire".
Message édité par chewif le 12-05-2008 à 17:04:51