hello,
j utilise un Csemaphore pour gerer la concurrence entre 2 thread.
dans le premier thread, j initialise le compteur du semaphore � 1 et le nombre max � 1. (de mani�re � ce qu il soit non bloquant au debut et que 1 seul thread puisse etre � la fois dans le sem.)
ensuite je bloque le semaphore dans une boucle de mani�re � ce que l itteration suivante soit preced�e d une action d un autre thread :
Code : S�lectionner tout - Visualiser dans une fen�tre � part m_pSem = new CSemaphore(1,1);
et evideament, apres reception du signal dans l autre thread je debloque le semaphore pour permettre au thread 1 de continuer avec son iteration 2 de la boucle.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 do{ CSingleLock l_Locker(m_pSemStopInstance); l_Locker.Lock(); envoie d un signal à l autre thread; }while(....);
Le probl�me est que dans le thread 1 ( le premier), le deuxi�me passage sur le lock() n est pas bloquant, alors que le thread 2 n'as pas encore fais le unlock() ???
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 reception du signal; traitement; CSingleLock l_Locker(m_pSem); l_Locker.Unlock();
Partager