1 需求分析
收銀員與顧客問題類似于經典的生產者和消費者問題,屬于經典的進程同步問題。需要實現以下問題:
在某超市有m個收銀員,且同時最多允許有n個顧客購物
當顧客數少于收銀員數時,顧客可以立即進行付款;當顧客數多于收銀員數時,顧客必須排隊等待付款
經過分析可知,需要將收銀員和顧客看成兩個進程,利用PV操作正確地協調這兩類進程之間的工作。
2 概要設計
2.1 構筑收銀員與顧客的隊列
構造兩個隊列用來分別存放收銀員與顧客的P、V 信息。
typedef struct LNode
typedef struct a
2.2 判定顧客處于哪個操作
void enque(linklist &l,char name) 函數對顧客進行插入操作,從等待狀態到付款(付款到付款完畢)。
char deque(linklist &l)函數對顧客進行刪除操作,當顧客由等待到付款時,就從等待隊列里將顧客刪除,當顧客從付款到等待時,就從付款隊列里將顧客刪除。
參考文檔和完整的文檔和源碼下載地址: