-
大小: 3KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-05-13
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
模擬:桌上有一只盤子,每次只能放入一個(gè)水果。爸爸專向盤子中放蘋果,媽媽專向盤子中放桔子,一個(gè)女兒專等吃盤子里的蘋果,一個(gè)兒子專等吃盤子里的桔子。只要盤子空則爸爸或媽媽都可以向盤子放一個(gè)水果,僅當(dāng)盤子中有自己需要的水果時(shí),兒子或女兒可以從盤子中取出水果。
采用Windows的事件機(jī)制實(shí)現(xiàn)。
代碼片段和文件信息
#include??
#include??
using?namespace?std;??
//聲明句柄??
HANDLE?EmptyPlate;??
HANDLE?Apple;
HANDLE?orange;??
HANDLE?fatherThread;
HANDLE?motherThread;
HANDLE?sonThread;
HANDLE?daughterThread;
//線程函數(shù)聲明??
DWORD?WINAPI?father(LPVOID?IpParameter);??
DWORD?WINAPI?mother(LPVOID?IpParameter);??
DWORD?WINAPI?daughter(LPVOID?IpParameter);??
DWORD?WINAPI?son(LPVOID?IpParameter);??
??
int?main()??
{??
????//創(chuàng)建信號(hào)量??
????EmptyPlate?=?CreateSemaphore(NULL11NULL);??//盤子??
????Apple?=?CreateSemaphore(NULL01NULL);?//蘋果??
????orange?=?CreateSemaphore(NULL01NULL);?//桔子??
??
????//創(chuàng)建線程??
????fatherThread?=?CreateThread(NULL0fatherNULL0NULL);??
????motherThread?=?CreateThread(NULL0motherNULL0NULL);??
????daughterThread?=?CreateThread(NULL0daughterNULL0NULL);??
????sonThread?=?CreateThread(NULL0sonNULL0NULL);??
?
????//等線程的結(jié)束??
????WaitForSingleobject(fatherThreadINFINITE);???
????WaitForSingleobject(motherThreadINFINITE);???
WaitForSingleobject(daughterThreadINFINITE);???
WaitForSingleobject(sonThreadINFINITE);???
????//關(guān)閉線程句柄??
????CloseHandle(fatherThread);????
????CloseHandle(motherThread);??
????CloseHandle(daughterThread);??
????CloseHandle(sonThread);??
??
????//關(guān)閉信號(hào)量句柄??
????Clos
評(píng)論
共有 條評(píng)論