bonjour,
comment peut-on envoyer des données entre thread ?
utiliser des variables globales me sembles pas terrible...
merci
bonjour,
comment peut-on envoyer des données entre thread ?
utiliser des variables globales me sembles pas terrible...
merci
Ça dépend de tes besoins:
- Variables globales + sections critiques
- Leur équivalent le plus proche: Variables sur le tas, chaque thread ayant un pointeur vers celles-ci (donné au lancement par exemple) + section critiques
- Pour des threads possédant une boucle de messages:
- Variables sur le tas + PostMessage, détruite par le destinataire
- Variable n'importe où + SendMessage()
J'utilise généralement la seconde solution, ou la troisième.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pour moi, deux cas:
- Soit le thread a autre chose à faire, donc tourne naturellement sur une boucle infinie ---> Pas de problème
- Soit le thread doit attendre que la variable ait changé: Là, il peut être interessant d'utiliser un Event, pour faire une attente passive et non active...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
je pense utiliser la troisième solution, ça a l'air plus simple, j'ai regardé les fonctionset
Code : Sélectionner tout - Visualiser dans une fenêtre à part PostThreadMessage(threadId, UINT, 0, 0);au niveau de l'id des threads ce sera gérer par des variables globales, par contre comment convertir une chaine de caractère en UINT et inversement ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax );
Si tu ne sais pas déjà ce qu'est un message Windows, lis un tutoriel avant de te lancer dans cette solution. Cela t'évitera des confusions.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager