Thread secondaires et principal
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
Bonjour,

j'ai besoin de faire le traitement suivant:
j'ai un thread secondaire qui effectue des calculs et qui doit les mettre à disposition de mon thread principal.

Mais mon thread principal ne doit pas attendre la fin du traitement de mon thread secondaire, car lui aussi a des choses à faire.

Donc en gros, mon thread principal lance mon secondaire, et le principal continue de faire ce qu'il a à faire, pendant ce temps le secondaire fait ses calculs, donc les deux thread vivent leur vie chacun de leur coté.
Et une fois les calculs du secondaire fini, il doit avertir le principal qu'il a fini et à partir de se moment là, le principal récupère les résultats qu'a obtenue le secondaire pour ses propres besoins.

L'utilisation des signaux ne semble pas convenir (d'après l'aide) car l'attente du signal est bloquante, ce que n'est pas souhaitable dans mon cas.

Je pensait utiliser les évènements, mais je ne sais pas comment déclarer un évènement utilisateur.

Toutes les bonnes idées sont les bien venues, merci a tous.

Contribution le : 08/04/2010 14:02
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: Thread secondaires et principal
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
pour la declaration de l'evenement utilisateur, je pense qu'il faut faire comme cela :

Pour se brancher sur l'evenement
evenements("nom de ma procedure", "Handle de mon objet", WM_USER+"num de mon eveement perso")

WM_USER = 1024

pour envoyer mon evenement depuis mon thread :
PostMessage ("Handle de mon objet", WM_WM_USER+"num de mon eveement perso", "wParam", "lParam")

Contribution le : 08/04/2010 14:08
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: Thread secondaires et principal
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
Cela semble fonctionner:

dans mon thread principal, je me branche sur mon evenement, qui appel un procedure (PROC1)


Je lance mon thread secondaire sur une procedure (PROC2)

PROC2 fait sont traitement puis fait un postmessage avec le bon numero d'evenement puis se met en attente de signal.

Le postmessage est intercepté par mon thread principal, ce qui declenche PROC1

PROC1 execute son traitement, puis envoie un signal à mon thread secondaire, ce qui le debloque et ainsi de suite.

Par moment j'ai des blocage, mon thread envoie bien mon message et se met en attente de signal, mais mon thread principal ne semble pas recevoir le message, et je n'est pas encore trouvé pourquoi ???

Contribution le : 09/04/2010 09:10
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: Thread secondaires et principal
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
J'ai crié victoire un peux trop tôt, cela ne fonctionne pas, j'ai des très nombreux blocages du au fait que le nombre de messages envoyés au thread principal est trop important (mais je n'ai pas vraiment le choix et même en mettant une sorte de temporisation, cela ne change rien), du coup, arrivé à un moment, les messages envoyé au principal s'écrasent les uns les autres, et tout est désynchronisé, le thread secondaires envoie son message au principal et se met en attente, le principal ne le reçois pas et du coup, ne réveil jamais mon secondaire.


Donc j'ai essayé de faire sans les attentes, je n'ai plus de blocage (enfin du peux de temps que j'ai testé) mais par contre, à la place, j'ai des plantages sur des lignes qui fonctionne bien et d'un coup, il me dit que la variable machin n'est pas un objet (mon thread secondaire appel des méthode d'un objet déclare en global dans ma fenêtre principale).

je vais voire si en passant par une procédure globale qui elle tapera dans les méthodes de ma classe résoue mon problème....mais j'en doute

Petit correctif sur mes précédent message : WM_USER = 32767 et non pas 1024 :)

Contribution le : 13/04/2010 09:11
_________________
be aware
Créer un fichier PDF de la contribution Imprimer


Re: Thread secondaires et principal
ChefDeProjet WDF
Inscrit:
29/05/2007 17:03
De Sassenage
Post(s): 180
nouvel épisode:
j'ai migré mon prototype en WD12, et certains de mes plantages sont résolus, mais la gestion des événements et/ou thread semble radicalement différente entre les deux versions, car sans rien changer au code, mon prototype se comporte de façon totalement différente. Il me faut donc revoir mon algo.

Je vais y arriver, je sais que je vais y arriver......

Contribution le : 14/04/2010 08:59
_________________
be aware
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2