//模拟2个线程FunProc1和FunProc2的交替运行
#include <stdio.h>
#include <windows.h>
DWORD WINAPI FunProc1( LPVOID lpParameter );
DWORD WINAPI FunProc2( LPVOID lpParameter );
int index = 0;
int ticket = 100;
HANDLE hMutex;
int main()
{
HANDLE hThread1;
HANDLE hThread2;
hThread1 = CreateThread( NULL, 0, FunProc1, NULL, 0, NULL );
hThread2 = CreateThread( NULL, 0, FunProc2, NULL, 0, NULL );
CloseHandle( hThread1 );
CloseHandle( hThread2 );
hMutex = CreateMutex( NULL, FLASE, NULL );
// hMutex = CreateMutex( NULL, TRUE, NULL );
// ReleaseMutex( hMutex );
Sleep( 4000 );
return 0;
}
DWORD WINAPI FunProc1( LPVOID lpParameter )
{
while( TRUE )
{
WaitForSingleObject( hMutex, INFINITE );
if ( ticket > 0 )
{
Sleep( 1 );
printf("FunProc1 sell ticket: %d/n", ticket-- );
}
else
break;
ReleaseMutex( hMutex );
}
return 0;
}
DWORD WINAPI FunProc2( LPVOID lpParameter )
{
while( TRUE )
{
WaitForSingleObject( hMutex, INFINITE );
if ( ticket > 0 )
{
Sleep( 1 );
printf("FunProc2 sell ticket...%d/n", ticket-- );
}
else
break;
ReleaseMutex( hMutex );
}
return 0;
}