www.pudn.com > os_example.rar > Mutex.cpp


#include   
#include   
#include  
#include   
#define THREAD_INSTANCE_NUMBER	3 
 
//全局变量 
int iCounter=0; 
 
DWORD SubThread(void * pD) 
{ 
	int iID=(int)pD; 
	 
	//在内部重新打开 
	HANDLE hCounterIn=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"sam sp 44"); 
 
	for(int i=0;i<8;i++) 
	{ 
		cout << "Thread " << iID << " waits for object." << endl; 
		WaitForSingleObject(hCounterIn,INFINITE); 
		int iCopy=iCounter; 
		Sleep(100); 
		iCounter=iCopy+1; 
		cout << " Thread " << iID <<" : " << iCounter << endl; 
		ReleaseMutex(hCounterIn); 
	} 
	CloseHandle(hCounterIn); 
	return 0; 
} 
 
void main(void) 
{ 
	//创建互斥量 
	HANDLE hCounter=NULL; 
	if( (hCounter=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"sam sp 44"))==NULL) 
	{ 
		//如果没有其他进程创建这个互斥量,则重新创建 
		hCounter = CreateMutex(NULL,FALSE,"sam sp 44"); 
	} 
 
	// Create a thread; 
    cout << "CreateThread" << endl; 
 
	DWORD IDThread[THREAD_INSTANCE_NUMBER];  
   	HANDLE hThread[THREAD_INSTANCE_NUMBER]; 
	int i; 
 
	//创建线程 
	for (i=0;i