1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<process.h>
4 #include<windows.h>
5
6 int g_nCount1 = 0,g_nCount2 = 0;
7 bool g_bThread = true;
8 UINT __stdcall ThreadProc(LPVOID);
9 int main(int argc,char* argv[])
10 {
11 HANDLE h[2];
12 unsigned m_uThreadId;
13 h[0] = (HANDLE)::_beginthreadex(NULL,0,ThreadProc,NULL,0,&m_uThreadId);
14 h[1] = (HANDLE)::_beginthreadex(NULL,0,ThreadProc,NULL,0,&m_uThreadId);
15 Sleep(1000);
16 g_bThread = false;
17 ::WaitForMultipleObjects(2,h,true,INFINITE);
18 printf("g_nCount1: %d g_nCount2: %d\n",g_nCount1,g_nCount2);
19 ::CloseHandle(h[0]);
20 ::CloseHandle(h[1]);
21
22 system("pause");
23 return 0;
24 }
25 UINT __stdcall ThreadProc(LPVOID lpParam)
26 {
27 while(g_bThread)
28 {
29 InterlockedIncrement((long*)&g_nCount1);
30 InterlockedDecrement((long*)&g_nCount2);
31 }
32 return 0;
33 }