Envoie à des threads

mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 21 mars 2008 à 21:56
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008 - 25 mars 2008 à 12:47
Bonjour à tous.

Je m'adresse à vous car j'ai un problème avec des threads et plus précisément avec le passage d'informations a partir d'un thread vers plusieur autres. Je travaille sous Code::Blocks avec les APIs Windows et je tiens à  préciser que je débute à peine en ce qui concerne la programmation multi-thread et que je n'ai vu que la théorie jusqu'a présent je ne connait donc aucune fonctions.
La situation est la suivante, mon programme principal lance un thread, qui a son tour va lancer plusieur autre threads qui auront une durée de vie relativmen tcourte. à la création de ces thread j'ai besoin de leur envoyer plusieur information comme son propre HANDLE ainsi que des entiers. Ces threads sont générés séquentiellement par une boucle et doivent recevoir ces information juste après leur création, je me doute qu'il faudras qu'il soit en attente jusqu'a qu'il les recoivent.

    Si quelqu'un pouvait m'expliquer assez précisément comment faire ceci je l'en remercie d'avance.

Merci.

5 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 mars 2008 à 23:06
Tu peux utiliser PostThreadMessage() par exemple, et au début de chaque thread tu mettras une boucle d'attente de message.
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
22 mars 2008 à 12:42
Bonjour.

Je vois vois ce qu'il faut faire, dans ma boucle de création de threads je fait un PostThreadMessage() juste après la création d'un thread, si j'ai bien compris dans PostThreadMessage() les threads sont identifés par la variable de type DWORD que l'on à utiliser lors de sa créaction. Il est possible que je me trompe car je n'arrive pas du tout à envoyer de messages.
    Serait-il possible d'avoir un exemple pour l'envoie des message et la boucle d'attente de message ?

Merci d'avance pour votre aide.
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
22 mars 2008 à 14:41
Bonjour.

C'est bon j'ai trouver un autre moyen pour passer des information au threads à leur créations.

Merci pour ton aide.
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
22 mars 2008 à 22:58
Bonsoir.

Parcontre j'ai un autre soucis dans le même style je veux envoyer une structure à un thread je procède comme cela :
hthread[j] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Fonction,&structure,0,&dwid);
Pour récupérer la structure dans le thread je procède ainsi :
long WINAPI Fonction (structure* mastructure)
{
    afficher(mastructure -> ..);.
}
Lorsque je veux lire les champs de ma structure ils sont vide, je doit louper une étape quelque part, si quelqu'un pourvais m'aider...

Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 12:47
perso, je créé un pointeur de structure, j'alloue la mémoire avec malloc, puis je passe le pointeur de structure au thread, la, aucuns problemes.
Puis dans le trhread, je recréé un pointeur de structure que je remplis ....

DWORD WINAPI thrd (LPVOID lParametre) <- déclaration du thread

dans le thread:

ParamThread *parametres;
parametres=(ParamThread*)lParametre;
0
Rejoignez-nous