ya des objets plus elaborés pr la synchronisation, genre les event. HANDLE evenement = CreateEvent(NULL,true,false,NULL); et if (WaitForSingleObject(evenement,0) == WAIT_OBJECT_0) pour tester l'etat de evenement (signalé ou non signalé)(SetEvent( ... ) permet de signaler un Event). bref le prob cé ke 'evenement' doit etre une variable partagé par les 2 threads, mais la c'est pas un probleme, vu que WaitForSingleObject(evenement,0) se débrouille bien. (le 0 correspond a un temps d'attente de 0ms, si tu mets 5000, ca va bloquer pdt 5 sec, et renvoyer WAIT_TIMEOUT si l'evenement a pas été signalé, et ca va bloquer pdt moins longtemps si entre temps tu le signales depuis l'autre thread, et la ca renvoie WAIT_OBJECT_O) en gros kan t'as 2 threads, partager une variable (classique) ds laquelle un peu ecrire et l'autre lire n'est pas une bonne idée ! et qd les deux peuvent y ecrire, ca peu faire des resultats imprévus. (genre une incrementation ds chak thread, mé en meme temps peu conduire a une seule incrémentation de la var. globale)
en gros si le thread 2 veut attendre ke le thread 1 ait fé kek chose, ds le 2 tu mets WaitForSingleObject(evenement,INFINITE), et dans le 1 tu mets SetEvent(evenement) au moment ou le 2eme doit démarrer.
en mrelisant cé pas super clair du premier coup mais bon ;)
|