2010-11-01 7 views
1

si j'ai un thread principal qui configure une fenêtre GLUT et ensuite créer un thread de travail pour faire des calculs et pendant les calculs sur certains événements dans le thread de travail je veux mettre à jour ma fenêtre GLUT. Comment puis je faire ça? Apparemment, je ne peux pas appeler les fonctions de saturation directement à partir du fil de travail. J'ai besoin de paramétrer un 'updateflag' qui est vérifié dans la boucle d'inactivité et s'il est activé, alors de redessiner la fenêtre GLUT, mais cela ne fonctionne pas non plus d'appeler les fonctions glut de la boucle inactive (ou le moins ne devrait pas être fait).GLUT et multithreading

Alors, quelle est la bonne façon de procéder?

merci!

+0

La seule réponse raisonnable est "n'essayez même pas de le faire". La surabondance a été conçue comme un cadre suffisant pour permettre aux exemples du livre de fonctionner, mais pas beaucoup plus que cela. Vous avez vraiment besoin de quelque chose de plus capable. –

Répondre

0

C'est un problème courant avec la plupart des frameworks GUI (la plupart ne sont normalement pas threadsafe).

La solution normale envoie des invocations à la boucle d'événement principal. Je ne suis pas sûr de la bibliothèque de threads que vous utilisez (certains auront probablement le concept de délégués, etc), mais dans votre cas, une simple file d'attente d'événements le ferait probablement.

Et oui, vous pouvez redessiner la fenêtre de la fonction inactive. Au moins, je l'ai toujours fait ...