Salut, j'ai un problème pour synchroniser 2 threads, je pense que la solution est du coté de WaitForSingleObject ou de SleepConditionVariableCS mais je ne sais pas comment utiliser ces fonctions pour remplacer proprement ma vilaine boucle while et le Sleep.
#define TIMEOUT 5000
class Game: public IAsync
{
private :
volatile BOOL m_bRunning;
Engine* m_pEngine;
public :
Game( );
~Game( );
BOOL Run( );
VOID Invoke( IResult* pResult ); // IAsync methode.
};
BOOL Game::Run( )
{
m_pEngine->Run( ); // Methode asynchrone qui va appeler la methode Invoke.
// Ici je voudrais attendre le passage de m_bRunning à TRUE.
DWORD dwTime = timeGetTime( );
while( ( timeGetTime( ) - dwTime ) < TIMEOUT )
{
if ( m_bRunning )
{
break;
}
Sleep( 0 ); // !!!
}
return m_bRunning;
}
VOID Game::Invoke( IResult* pResult )
{
// ...
m_bRunning = TRUE;
}