#include
#include
#include
int g_a=0;
int g_b=0;
bool g_flag=true;
CRITICAL_SECTION g_s;
unsigned __stdcall ThreadProcA(void *p)
{
while(g_flag)
{
EnterCriticalSection(&g_s);
g_a++;
g_b++;
LeaveCriticalSection(&g_s);
}
return 0;
}
int main()
{
HANDLE hThread[2];
InitializeCriticalSection(&g_s);
hThread[0]=(HANDLE)_beginthreadex(NULL,0,(unsigned( __stdcall * )( void * ))ThreadProcA,NULL,0,NULL);
hThread[1]=(HANDLE)_beginthreadex(NULL,0,(unsigned( __stdcall * )( void * ))ThreadProcA,NULL,0,NULL);
Sleep(1000);
g_flag=false;
WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
DeleteCriticalSection(&g_s);
printf("g_a=%d/n",g_a);
printf("g_b=%d/n",g_b);
return 0;
}