多线程 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;
}
//
#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;
}
相关文章推荐
- 定时器与多线程 SetTimer and Multi-Thread 每个线程独立使用一个定时器
- MD(多线程DLL)和MT(MultiThread…
- Thread_MultiShareData(多线程共享变量)
- [2014-11-19]Java笔记_多线程(Multi-Thread)
- 发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
- Operation System: Multi-thread 多线程 v.s. 多进程
- Tensorflow并行计算:多核(multicore),多线程(multi-thread),图分割(Graph Partition)
- 定时器与多线程 SetTimer and Multi-Thread 每个线程独立使用一个定时器
- Python(11):多线程(Multi-Thread)
- Operation System: Multi-thread 多线程 v.s. 多进程
- 发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
- Operation System: Multi-thread 多线程 v.s. 多进程
- Operation System: Multi-thread 多线程 v.s. 多进程
- iOS 多线程安全的数组MultiThreadSafeObject
- Operation System: Multi-thread 多线程 v.s. 多进程
- 黑马程序员——MultiThreadShareData(多线程操作,多播)
- Operation System: Multi-thread 多线程 v.s. 多进程
- Operation System: Multi-thread 多线程 v.s. 多进程
- Java多线程3:Thread中的静态方法
- [Java多线程]-Thread和Runable源码解析之基本方法的运用实例