[源碼和文檔分享]操作系統的收銀員與顧客問題

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)函數對顧客進行刪除操作,當顧客由等待到付款時,就從等待隊列里將顧客刪除,當顧客從付款到等待時,就從付款隊列里將顧客刪除。

參考文檔和完整的文檔和源碼下載地址:

https://www.write-bug.com/article/1819.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容