Encore une histoire de threads...

Signaler
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011
-
jul39dole
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011
-
Bonjour,
J'ai quelques problèmes avec des threads, ou disons je ne sais pas quelle solution adoptée.
Voilà le contexte :
- j'ai un thread "Partie" qui centralise les informations
- j'ai un thread "Graphique" qui affiche des données issues du Noyau
- j'ai un thread "Reseau" qui receptionne et envoi des données issues du Noyau

Le problème est que je ne sais pas comment faire communiquer tout cela. Les informations du logiciel sont centralisée dans Partie. J'ai un problème de "ressource exclusive" sur Partie déjà. Dois-je mettre des sémaphores sur Partie, avec un accès direct Partie->Graphique et Partie<->Reseau via des pointeurs? Dois-je faire un système d'évènement, avec une file dans chacun des threads stockant une liste d'évènements?

Quelle méthode est la plus simple, la plus rapide et la plus sûre pour communiquer entre threads?

a+

Ju.

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
A mon gout, c'est le système d'événement qui est de loin le plus propre et le plus évolutif.
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011

dans ce cas, j'ai encore une question :
-lorsque "Partie" attend un évènement, je le "sleep". Mais étant donné qu'il est le processus père de tous les threads, est-ce que cela stoppe également l'exécution des autres threads? (je suis sous wxWidget, je fais donc un wxSleep()).
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas non. Sinon quel serait l'intéret des threads ?
Mais si tu es sous wxWidget, tu n'as rien a faire, meme pas de sleep a gérer. wxWidget fournit le système d'événement donc c'est très simple de faire ce que tu souhaites. Utilises les "posted event": "wxEvtHandler::AddPendingEvent"
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011

hum d'accord pour cette précision. je vais étudier la question.