DWORD WINAPI Fun1Proc(LPVOID lParam);
DWORD WINAPI Fun2Proc(LPVOID lParam);
int balance = 110;// [ 10 ]
CRITICAL_SECTION critical;//
/* [ ] */
void main()
{
InitializeCriticalSection(&critical);
HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);// 1 [ 100 , 110 ]
HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);// 2 [ 100 , 10 ]
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(5000);
DeleteCriticalSection(&critical);
}
DWORD WINAPI Fun1Proc(LPVOID lParam)
{
int i = 50;
while (i-- > 0)
{
EnterCriticalSection(&critical);
if (balance 0)
{
EnterCriticalSection(&critical);
if (balance-100<10)
{
printf(" 2:\t :%d , , 2 , 1 ...
",balance);
LeaveCriticalSection(&critical);
continue;
}
printf(" 2:\t %d , 2 100
",balance);
balance-=100;
LeaveCriticalSection(&critical);
}
return 0;
}