#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
DWORD WINAPI Fun1Pro(LPVOID lpParameter);
DWORD WINAPI Fun2Pro(LPVOID lpParameter);
DWORD WINAPI Fun3Pro(LPVOID lpParameter);
int ticker = 1000;
HANDLE hMutex;
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE thread1;
HANDLE thread2;
HANDLE thread3;
thread1 = CreateThread(NULL, 0, Fun1Pro, NULL, 0, NULL);
thread2 = CreateThread(NULL, 0, Fun2Pro, NULL, 0, NULL);
thread3 = CreateThread(NULL, 0, Fun3Pro, NULL, 0, NULL);
CloseHandle(thread1);
CloseHandle(thread2);
CloseHandle(thread3);
hMutex = CreateMutex(NULL, FALSE, NULL);
Sleep(4000);
return 0;
}
DWORD WINAPI Fun1Pro(LPVOID lpParameter)
{
while (TRUE)
{
WaitForSingleObject(hMutex, INFINITE);
if (ticker > 0)
{
Sleep(2);
cout << "number one sale ticket : " << ticker-- << "sale" << endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
DWORD WINAPI Fun2Pro(LPVOID lpParameter)
{
while (TRUE)
{
WaitForSingleObject(hMutex, INFINITE);
if (ticker > 0)
{
Sleep(2);
cout << "number two sale ticket : " << ticker-- << "sale" << endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
DWORD WINAPI Fun3Pro(LPVOID lpParameter)
{
while (TRUE)
{
WaitForSingleObject(hMutex, INFINITE);
if (ticker > 0)
{
Sleep(2);
cout << "number three sale ticket : " << ticker-- << "sale" << endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
虽然很简单,但是刚刚开始看线程,还是比较HAPPY的.
HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName );
lpMutexAttributes
Timeout.Infinite 字段
语法
C++ |
---|
public: literal int Infinite |