使用執行緒模擬解決銀行排隊叫號問題
使用執行緒模擬解決銀行排隊叫號問題。
在銀行中有一個叫號機,有一個10個座位的長椅,客戶在叫號後如果無人在櫃檯前服務,就會去要求服務;如果櫃檯忙,則會找長椅入座;如果長椅滿則會離開。
要求顯示輸出叫號過程,分析程式執行狀況,並對程式作出評估。
程式思想
定義兩個訊號量chair,call。使用sem_init()初始化訊號量,分別賦值為11和2,因為使用sem_wait()時,值為-1就開始阻塞不能訪問共享資源叫號服務和座位,call賦初值為2,可以實現一個執行緒訪問另一個執行緒執行sem_wait()函式時,可以訪問共享資源不會阻塞,這樣就可以實現一個執行緒被服務,其餘執行緒也可以接受臨界區資源的服務而不被阻塞。同樣chair訊號量也是這個原理。因為執行緒的建立和訪問時隨機的,訊號量的等待和釋放也是在短時間內完成的,所以使用sleep函式來實現,模擬被服務的時間和在座位上等待的時間。同時在櫃檯空閒時,座位上的客戶可以到櫃檯上接受服務。本實驗程式碼提前設定了15個客戶,在體驗方面與真實的的銀行服務有差別,因為執行緒的建立和登出都是瞬時的,只要執行緒數量足夠多,實現結果越接近真實的銀行服務。
#include<stdio.h>
#incl
相關文章
- 模擬銀行排隊時間—4佇列佇列
- C++ 實現銀行排隊服務模擬C++
- 企圖使用c++執行緒解決nodejs單執行緒問題C++執行緒NodeJS
- Thinking in Java---多執行緒模擬:銀行出納員模擬+飯店模擬+汽車裝配工廠模擬ThinkingJava執行緒
- shell模擬“多執行緒”執行緒
- iOS多執行緒全套:執行緒生命週期,多執行緒的四種解決方案,執行緒安全問題,GCD的使用,NSOperation的使用iOS執行緒GC
- 【java 多執行緒】多執行緒併發同步問題及解決方法Java執行緒
- 模擬主執行緒等待子執行緒的過程執行緒
- 多執行緒-執行緒安全問題的產生原因分析以及同步程式碼塊的方式解決執行緒安全問題執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒問題解釋執行緒
- 多執行緒的安全問題及解決方案執行緒
- Python執行緒安全問題及解決方法Python執行緒
- 執行緒問題執行緒
- 多執行緒-生產者消費者問題程式碼2並解決執行緒安全問題執行緒
- 【練習】銀行排號程式
- java多執行緒執行問題Java執行緒
- 多執行緒併發同步問題及解決方案執行緒
- Java中解決多執行緒資料安全問題Java執行緒
- JAVA學習之路(多執行緒)—模擬售票(細解)Java執行緒
- 多執行緒問題執行緒
- 使用tcpdump解決應用不能執行問題TCP
- 子執行緒使用父執行緒RequestScope作用域Bean問題的探究執行緒Bean
- 使用redis分散式鎖解決併發執行緒資源共享問題Redis分散式執行緒
- seam中使用多執行緒的問題執行緒
- 如何解決多執行緒併發問題執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- SimpleDateFormat 執行緒安全問題ORM執行緒
- java執行緒安全問題Java執行緒
- 03 執行緒安全問題執行緒
- Java中多執行緒的概述、實現方式、執行緒控制、生命週期、多執行緒程式練習、安全問題的解決...Java執行緒
- Python | 多執行緒死鎖問題的巧妙解決方法Python執行緒
- java多執行緒程式設計問題以及解決辦法Java執行緒程式設計
- 多執行緒併發安全問題詳解執行緒
- 關於js執行緒問題的解讀JS執行緒
- Java多執行緒面試高配問題---多執行緒(3)🧵Java執行緒面試
- 多執行緒-死鎖問題概述和使用執行緒
- Java執行緒的排程Java執行緒