线程互斥共享资源

#include <windows.h>
#include <iostream.h>
DWORD WINAPI ThreadProc1(LPVOID lpParameter);
DWORD WINAPI ThreadProc2(LPVOID lpParameter);
int tickets=100;
HANDLE hMutex;
void main(){
	HANDLE handle1;	
	HANDLE handle2;

	handle1=CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);
	handle2=CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);
	CloseHandle(handle1);
	CloseHandle(handle2);
	hMutex=CreateMutex(NULL,false,NULL);
	Sleep(4000);
	//CloseHandle(hMutex);
}

DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
	while(true){
		WaitForSingleObject(hMutex,INFINITE);
		if (tickets>0)
		{
			cout<<"Thread1 sell:"<<tickets--<<endl;
		} 
		else
		{
			break;
		}
		ReleaseMutex(hMutex);
	}
	return 0;
}

DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
	while(tickets>0){
		WaitForSingleObject(hMutex,INFINITE);
		if (tickets>0)
		{
			cout<<"Thread2 sell:"<<tickets--<<endl;
		} 
		else
		{
			break;
		}
		ReleaseMutex(hMutex);
	}
	return 0;
}

/*
	HANDLE hMutex;
	//在主线程创建互斥对象
	hMutex=CreateMutex(NULL,false,NULL);
	//在分线程里请求互斥对象
	WaitForSingleObject(hMutex,INFINITE);
	//在分线程里释放互斥对象
	ReleaseMutex(hMutex);
*/

你可能感兴趣的:(C++,c,C#)