lockFunctionDemo

 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
",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 }
原文地址:https://www.cnblogs.com/FWFC/p/6360481.html