• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签:

资源简介

模拟:桌上有一只盘子,每次只能放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个女儿专等吃盘子里的苹果,一个儿子专等吃盘子里的桔子。只要盘子空则爸爸或妈妈都可以向盘子放一个水果,仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。 采用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

评论

共有 条评论