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