您的位置:首页 > 编程语言 > C语言/C++

多线程 MultiThread.cpp

2008-11-09 23:15 288 查看
// MultiThread.cpp : 定义控制台应用程序的入口点。
//

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

using namespace std;
int tickets = 100;
HANDLE hMutex;

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

int _tmain(int argc, _TCHAR* argv[])
{
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);

Sleep(2000);
system("pause");
return 0;
}

DWORD WINAPI Fun1Proc(LPVOID lp)
{
while(1)
{
WaitForSingleObject(hMutex,INFINITE);
if(tickets > 0)
{
Sleep(10);
cout << "thread1 sell ticket." << tickets-- <<endl;
}
else
break;
ReleaseMutex(hMutex);
}
return 0;
}

DWORD WINAPI Fun2Proc(LPVOID lp)
{
while(1)
{
WaitForSingleObject(hMutex,INFINITE);
if(tickets > 0)
cout << "thread2 sell ticket." << tickets-- <<endl;
else
break;
ReleaseMutex(hMutex);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: