资源简介
模拟:桌上有一只盘子,每次只能放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个女儿专等吃盘子里的苹果,一个儿子专等吃盘子里的桔子。只要盘子空则爸爸或妈妈都可以向盘子放一个水果,仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。
采用Windows的事件机制实现。
代码片段和文件信息
#include
#include
using namespace std;
//声明句柄
HANDLE EmptyPlate;
HANDLE Apple;
HANDLE orange;
HANDLE fatherThread;
HANDLE motherThread;
HANDLE sonThread;
HANDLE daughterThread;
//线程函数声明
DWORD WINAPI father(LPVOID IpParameter);
DWORD WINAPI mother(LPVOID IpParameter);
DWORD WINAPI daughter(LPVOID IpParameter);
DWORD WINAPI son(LPVOID IpParameter);
int main()
{
//创建信号量
EmptyPlate = CreateSemaphore(NULL11NULL); //盘子
Apple = CreateSemaphore(NULL01NULL); //苹果
orange = CreateSemaphore(NULL01NULL); //桔子
//创建线程
fatherThread = CreateThread(NULL0fatherNULL0NULL);
motherThread = CreateThread(NULL0motherNULL0NULL);
daughterThread = CreateThread(NULL0daughterNULL0NULL);
sonThread = CreateThread(NULL0sonNULL0NULL);
//等线程的结束
WaitForSingleobject(fatherThreadINFINITE);
WaitForSingleobject(motherThreadINFINITE);
WaitForSingleobject(daughterThreadINFINITE);
WaitForSingleobject(sonThreadINFINITE);
//关闭线程句柄
CloseHandle(fatherThread);
CloseHandle(motherThread);
CloseHandle(daughterThread);
CloseHandle(sonThread);
//关闭信号量句柄
Clos
- 上一篇:基于颜色的目标追踪源码
- 下一篇:C语言实现日历阳历+农历输出
评论
共有 条评论