begin process at 2008 08 20 17:19:49
1 228 990 membres
350 nouveaux aujourd'hui
14 259 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lancement thread successif (ordonnés) [ Archives / Au secours ] (themaste)

Lancement thread successif (ordonnés) le 19/09/2005 09:58:45

themaste
Salut!
Voila, j'ai une question d'ordre propreté du code.
En fait, j'ai plusieurs thread, et j'aimerais pouvoir les lancés les un après les autres..je m'explique....
Chaque thread possède une initialisation, mais il faudrait que le thread 2 se lance une fois que le 1 a fini son initialisation, que le 3 commence après l'init du 2 etc....
J'ai pensé a une variable globale (système que j'utilise deja pour la fin), mais je voulais savoir si il y avait une methode "propre" vis a vis du code pour ce principe.

Je vous remercie pour vos reponses!!!

Re : Lancement thread successif (ordonnés) le 19/09/2005 10:07:12

BruNews
(Admin CS)
Une solution propre, fais un event avec CreateEvent(), tu pourras faire un WaitForSingleObject dessus, le signaler par SetEvent(), etc...

ciao...
BruNews, MVP VC++

Re : Lancement thread successif (ordonnés) le 19/09/2005 11:46:29

dofdof
Salut,

Tu peux créer un objet file d'attente.

Re : Lancement thread successif (ordonnés) le 19/09/2005 17:28:45

themaste

J'ai essayer avec les events, mais sans succès a priori. Je dois mal m'y prendre.

Voila ce que j'ai:

HANDLE hGlobalWriteEvent;

DWORD WINAPI LaunchMainThread( LPVOID pParam )

{

bool l_bResult = SetEvent(hGlobalWriteEvent);

...

l_bResult = ResetEvent(hGlobalWriteEvent);

...

//Fin du thread

ExitThread(0);

return 0; // thread completed successfully

}

DWORD WINAPI LaunchDecisionCheckingThread( LPVOID pParam )

{

WaitForSingleObject(hGlobalWriteEvent, INFINITE);

...

//Fin du thread

ExitThread(0);

return 0; // thread completed successfully

}

Et dans la fonction principale, je met:

hGlobalWriteEvent = CreateEvent(NULL, TRUE, TRUE, "WriteEvent");
Avant de créer les thread...
Mais en fait, le waitfor singleobject n'attends pas..... Du coup, je sais pas koi faire.


Re : Lancement thread successif (ordonnés) le 19/09/2005 17:47:35

BruNews
(Admin CS)
Func qui lance les threads:
hev = CreateEvent(0, 1, 0, 0); // MANUEL, NON SIGNALE
// lance 1er thread
WaitForSingleObject(hev, INFINITE);   // ATTENTE SIGNALEMENT
ResetEvent(hev);                      // REMISE EN NON SIGNALE
// lance 2nd thread
WaitForSingleObject(hev, INFINITE);   // ATTENTE SIGNALEMENT
ResetEvent(hev);                      // REMISE EN NON SIGNALE
etc....
CloseHandle(hev);

1er thread:
// fais ses inits
SetEvent(hev); // INFORME QUI ATTEND PAR SIGNALEMENT EVENT
// finit son boulot

autres threads idem.


ciao...
BruNews, MVP VC++


Classé sous : code, lancement, thread, successif, ordonnés

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
campagne Adwords
Budget : 5 000€
Boite echanges securis...
Budget : 500€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS