salut,

Si j ai un CWinThread XXX qui fait un traitement du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
do
{
	Semaphore->Lock();
	ActionA();
	Semaphore->Unlock();
 
	ActionB();
}while(true)
et que depuis le thread principale je fait XXX->SuspendThread() durant l'execution de ActionA()

Que se passe t il ?
  • 1) execution du thread jusqu a liberation du CSemaphore puis suspension
  • 2) suspension immediate -> donc pas de liberation du CSemaphore


mes propositions:
Dans le cas 2: je dois appeler SuspendThread() depuis le thread principal, mais seuleument si j ai pu acquerir le Semaphore.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
XXX->Semaphore->Lock();
XXX->SuspendThread();
XXX->Semaphore->Unlock();
Dans le cas 1: pas de problème (pour le Semaphore)

Le problème est le suivant :
dans tout les cas, mon thread va se suspendre trop tard