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