www.pudn.com > os_example.rar > CriticalSection.cpp
#include#include #include #include #define THREAD_INSTANCE_NUMBER 3 //全局变量 int iCounter=0; CRITICAL_SECTION criCounter; DWORD SubThread(void * pD) { int iTemp=(int)pD; cout << "SubThread" << iTemp << endl; for(int i=0;i<8;i++) { EnterCriticalSection(&criCounter); int iCopy=iCounter; Sleep(100); iCounter=iCopy+1; printf("thread %d : %d\n",iTemp,iCounter); LeaveCriticalSection(&criCounter); } return 0; } void main(void) { cout << "CreateThread" << endl; // Create a thread; DWORD IDThread[THREAD_INSTANCE_NUMBER]; HANDLE hThread[THREAD_INSTANCE_NUMBER]; int i; //创建临界区 InitializeCriticalSection(&criCounter); //创建线程 for (i=0;i