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.)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
m_pSem = new CSemaphore(1,1);
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
1
2
3
4
5
do{
CSingleLock l_Locker(m_pSemStopInstance);				
l_Locker.Lock();
envoie d un signal à l autre thread;
}while(....);
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
 
reception du signal;
traitement;
CSingleLock l_Locker(m_pSem);				
l_Locker.Unlock();
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() ???