1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
HANDLE hMutex; // variable globale
void thread1()
{
/* utilisation de hMutex */
WaitForSingleObject( hMutex, INFINITE ); // acquérir le mutex
// section critique
ReleaseMutex( hMutex ); // libérer le mutex
}
void thread2()
{
/* utilisation de hMutex */
WaitForSingleObject( hMutex, INFINITE ); // acquérir le mutex
// section critique
ReleaseMutex( hMutex ); // libérer le mutex
}
int main()
{
// créer le mutex
hMutex = CreateMutex( NULL, FALSE, NULL ); // anonyme
// créer les thread
HANDLE hThreads[ 2 ];
hThread[ 0 ] = CreatThread( /*thread1*/ );
hThread[ 1 ] = CreatThread( /*thread2*/ );
// attendre leur fin
WaitForMultipleObjects( 2, hThreads, TRUE, INFINITE );
// détruire le mutex
CloseHandle( hMutex );
} |