begin process at 2012 05 30 07:42:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Questions sur les applications multithread (dépendance des threads)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Questions sur les applications multithread (dépendance des threads)

mercredi 27 janvier 2010 à 12:00:20 | Questions sur les applications multithread (dépendance des threads)

LaTatadu91

Bonjour,

Je me pose quelque questions avant le développement d'une application multithread.
Je n'ai que très peu de connaissances sur ce sujet, je le précise!

Donc imaginons une appli avec 3 threads : 1 thread principal qui tourne en boucle, et 2 autres threads dédié à la communication (1pour SQL et 1 com TCP/IP avec un autre PC)
les thread 2 et 3 "alimentent" le thread 1 en données.
Mon problème est là : comment garder une indépendance des threads, tout en faisant en sorte qu'ils soient lié: par exemple le thread 3 reçoit un message d'un autre PC via TCP/IP et ce message doit déclenché une action donc appeler une fonction du thread 1?

j'ai imaginer utiliser des booléens communs a tout le code: le thread 3 met ce booléen a true , et dans la boucle principale du thread 1 il vérifie ce même booleén et si true appelle les fonctions correspondantes, pusi le remet à false... mais ça sent un peu le bidouillage, non?




 
mercredi 27 janvier 2010 à 12:59:11 | Re : Questions sur les applications multithread (dépendance des threads)

Pistol_Pete

Réponse acceptée !
Salut
Tu peux utiliser la fonction PostThreadMessage() pour envoyer des message aux threads
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
mercredi 27 janvier 2010 à 13:16:08 | Re : Questions sur les applications multithread (dépendance des threads)

LaTatadu91

salut, tu peux m'expliquer un peu son fonctionnement STP?
merci pour l'info.


 
mercredi 27 janvier 2010 à 13:30:24 | Re : Questions sur les applications multithread (dépendance des threads)

Pistol_Pete

Reprenons ton exemple:
"Le thread 3 reçoit un message d'un autre PC via TCP/IP ", dès qu'il recoit ce message, il va appeler la fonction PostThreadMessage() avec comme identifiant l'id du thread principal.
Donc ton thread principale (celui qui ne fait qu'attendre les messages) va recevoir ce message et tu pourras déclencher une action approprié.
Pour plus d'info cf msdn.

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
mercredi 27 janvier 2010 à 13:36:07 | Re : Questions sur les applications multithread (dépendance des threads)

LaTatadu91


Ok merci, entre temps j'ai lu quelques exemples sur ce site et autre...
Ca serait parfait si mon thread principal était en attente de messages des autres threads, mais en fait mon thread principal doit non seulement rester à l'écoute des autres threads mais aussi tourner en boucle sur d'autres fonctions de bases...
comment m'y prendre?
dois je diviseer mon thread principal en plusieurs thread?


 
mercredi 27 janvier 2010 à 13:43:57 | Re : Questions sur les applications multithread (dépendance des threads)

Pistol_Pete

Ce n'est pas un problème. Utilise la fonction PeekMessage(). Elle te permet de vérifier si un thread a envoyé un message et si aucun message n'est envoyé elle rend la main et tu pourras exécuter tes fonctions de base. (Si tu veux vraiment attendre un message c'est la fonction GetMessage() qu'il faut utiliser. GetMessage() est bloquante)

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
mercredi 27 janvier 2010 à 13:49:40 | Re : Questions sur les applications multithread (dépendance des threads)

LaTatadu91


Ok, donc j'utilise PeekMessage pour ne aps bloquer mon thread principal, c'est bon à savoir, mais imaginons que je reçoive consécutivement un message du thread 2 et du thread 3, un seul sera traité? je perdrais le second message, non?

 
mercredi 27 janvier 2010 à 14:03:21 | Re : Questions sur les applications multithread (dépendance des threads)

LaTatadu91

Et aussi, si je veux utiliser dans mon thread 1 des données du thread 2 , je dois forcément utiliser des avriables globales? (ce qui me fait peur c'est un dysfonctionnement dans ce cas là) si les 2 threads accèdent en même temps à ces variables...
En tout cas merci pour ton aide!


 
mercredi 27 janvier 2010 à 14:07:00 | Re : Questions sur les applications multithread (dépendance des threads)

Pistol_Pete


Non les messages sont empilés. PeekMessage ne fait que lire le premier message. S'il y en a deux dans la file le premier appel à PeekMessage dépilera celui du thread 2 et le second appel celui du thread 3.

Il faut juste s'assurer d'appeler souvent PeekMessage (par exemple à chaque fois que tu as fini ton traitement de base.)

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
mercredi 27 janvier 2010 à 14:10:01 | Re : Questions sur les applications multithread (dépendance des threads)

LaTatadu91

Niquel, déjà un soucis en moins.
Pour mon problème de variables globales, je pensais à utiliser SQL Server Express en intermédiaire, ce qui permettrait en plus une sauvegarde des messages reçus.
t'en penses quoi?

en tout cas merci, coté théorique ça semble clair dans ma tête ya plus qu'à se mettre à la pratique!


 

1 2

Cette discussion est classée dans : questions, applications, thread, threads, multithread


Répondre à ce message

Sujets en rapport avec ce message

Threads et heap privé [ par mzhunix ] Salut à tous,je crée un heap privé "hHeapPrivate" dans le thread principale avec HeapCreate j'alloue quelques pointeurs dessus puis je crée un autre t Multithread... [ par ben78 ] Bonjour, Je développe une petite appli pour contrôler un modem série.Pour lire les datas du port série j'utilise un Thread.Tout marche bien, mais quan CSocket : Multithread ? [ par guiguikun ] Pourquoi est-ce que je me retrouve avec une assertion error à chaque fois que je veux accepter une connection d'un client dans un nouveau thread (AfxB Multithread sans threads. [ par guiguikun ] Est-ce qu'un serveur peut gerer plusieurs client sans creer un thread par client ?Comment faisait-on quand les OS n'etaient pas encore multitaches ?Le timer dans des threads [ par z3bul0n ] Comment faire pour gérer un SetTimer créé dans un thread sans utiliser de fonction : j'aimerai recevoir le WM_TIMER à chaque fois qu'il y en a un dans Help (threads) [ par loicus ] Bon, bhen voila.. j'essaye de faire un threadj'aimerais ouvrir la fonctions LCD_BootScreen() dans un thread, donc j'utilise cette fonction :thboot= Cr Help (threads) [ par loicus ] Bon, bhen voila.. j'essaye de faire un threadj'aimerais ouvrir la fonctions LCD_BootScreen() dans un thread, donc j'utilise cette fonction :thboot= Cr à propos des threads [ par GUERRIER_ABSOLU ] Salut, je voudrais savoir s'i quelqu'un a déjà essayé d'appeler une fonction dans un thread et a remarqué quelque chose d'innatendu. En fait quand j'a linux multithread [ par yoosh ] bonjour a toi,j'ai besoin d'aide.c sur linux multithread a programmer en c.il y a ecrire un multithread program avec posix threads en c .1 thread dev thread [ par m10s11 ] pour un prog créé avec l'appWizard je voudrais utiliser des threads or apres avoir créé les threads je n'arrive pas a les lier a des fonctions graphiq


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,638 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales