CreateMutex利用互斥对象实现线程同步实例

CreateMutex利用互斥对象实现线程同步实例

#include  < windows.h >
#include 
< iostream.h >

DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int  index = 0 ;
int  tickets = 100 ;
HANDLE hMutex;
void  main()
{
    HANDLE hThread1,hThread2;
    hThread1
=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
    hThread2
=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
    CloseHandle(hThread1);
    CloseHandle(hThread2);
    
    hMutex
=CreateMutex(NULL,FALSE,NULL);
    
//TRUE代表主线程拥有互斥对象 但是主线程没有释放该对象  互斥对象谁拥有 谁释放
    
//FLASE代表当前没有线程拥有这个互斥对象

    Sleep(
4000);

}


DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t1: "<<tickets--<<endl;
        
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}


DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t2: "<<tickets--<<endl;
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}


你可能感兴趣的:(CreateMutex利用互斥对象实现线程同步实例)