-
Gestion des MVC
Bonjour à tous,
je débute dans les MVC et je me retrouve dans un problème de gestion de thread et MVC.
Mon appli reçoit des infos du réseau dans une classe de réception gérée par un thread.
Ma partie graphique doit afficher ses infos, elle est gérée par un autre thread.
Pour réaliser la communication entre les 2, j'ai mis un signal-slot (QT). Le problème est que je suis obligé d'endormir mon thread de réception pour que la partie graphique affiche le message. Sinon, on sort de la réception et les informations sont perdues.
Mon problème est que ce fonctionnement ralenti la réception des messages.
Je voudrais savoir si en implémentant un modèle MVC avec la classe Reception en modèle de ma partie graphique, l'émission du message peut être pris directement en compte, sans perte de temps, ni de données.
Au final, que le signal-slot soit géré comme un appel de méthode.
Si vous avez des questions ou suggestions, je suis preneur.
Merci
-
Bonjour,
en général, pour résoudre ce problème, on utilise des files de réception de type FIFO (ou d'émission mais c'est beaucoup plus rare).
Le principe est le suivant:
Appelons Tr le transmetteur (dans ton cas, l'application qui gère le réseau), et Rr le récepteur (dans ton cas l'interface graphique), et Msg le message (ou les données) envoyées par Tr à Rr.
1. Il faut que les données reçues (Msg) par Rr puissent être stockées en mémoire. Autrement dit, créer une structure/classe qui puisse garder les informations reçues. Généralement une simple string suffit, mais il est souvent plus agréable de structurer ces données dans une classe/structure pour les stocker.
2. A la réception d'un Msg, Rr va le stocker dans une FIFO.
3. Dans Rr, il faut implémenter un mécanisme qui vérifie de temps en temps s'il y a un Msg dans la FIFO. Ce mécanisme, concrètement, dépend de ton architecture, mais il y a de fortes chances pour qu'il soit nécessaire de créer un thread supplémentaire pour gérer ça.
Hope it helps.