使用執行緒模擬解決銀行排隊叫號問題
使用執行緒模擬解決銀行排隊叫號問題。
在銀行中有一個叫號機,有一個10個座位的長椅,客戶在叫號後如果無人在櫃檯前服務,就會去要求服務;如果櫃檯忙,則會找長椅入座;如果長椅滿則會離開。
要求顯示輸出叫號過程,分析程式執行狀況,並對程式作出評估。
程式思想
定義兩個訊號量chair,call。使用sem_init()初始化訊號量,分別賦值為11和2,因為使用sem_wait()時,值為-1就開始阻塞不能訪問共享資源叫號服務和座位,call賦初值為2,可以實現一個執行緒訪問另一個執行緒執行sem_wait()函式時,可以訪問共享資源不會阻塞,這樣就可以實現一個執行緒被服務,其餘執行緒也可以接受臨界區資源的服務而不被阻塞。同樣chair訊號量也是這個原理。因為執行緒的建立和訪問時隨機的,訊號量的等待和釋放也是在短時間內完成的,所以使用sleep函式來實現,模擬被服務的時間和在座位上等待的時間。同時在櫃檯空閒時,座位上的客戶可以到櫃檯上接受服務。本實驗程式碼提前設定了15個客戶,在體驗方面與真實的的銀行服務有差別,因為執行緒的建立和登出都是瞬時的,只要執行緒數量足夠多,實現結果越接近真實的銀行服務。
#include<stdio.h>
#incl
相關文章
- 模擬銀行排隊時間—4佇列佇列
- Java24解決了虛擬執行緒同步使用問題Java執行緒
- 企圖使用c++執行緒解決nodejs單執行緒問題C++執行緒NodeJS
- iOS多執行緒全套:執行緒生命週期,多執行緒的四種解決方案,執行緒安全問題,GCD的使用,NSOperation的使用iOS執行緒GC
- Python執行緒安全問題及解決方法Python執行緒
- 多執行緒問題解釋執行緒
- 多執行緒的安全問題及解決方案執行緒
- 模擬主執行緒等待子執行緒的過程執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒併發同步問題及解決方案執行緒
- Java中解決多執行緒資料安全問題Java執行緒
- 子執行緒使用父執行緒RequestScope作用域Bean問題的探究執行緒Bean
- 使用redis分散式鎖解決併發執行緒資源共享問題Redis分散式執行緒
- Python | 多執行緒死鎖問題的巧妙解決方法Python執行緒
- JAVA學習之路(多執行緒)—模擬售票(細解)Java執行緒
- 如何解決多執行緒併發問題執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- 03 執行緒安全問題執行緒
- SimpleDateFormat 執行緒安全問題ORM執行緒
- java多執行緒程式設計問題以及解決辦法Java執行緒程式設計
- 執行緒Thread練習題1買票,使用多執行緒的方式模擬四個視窗賣100張票執行緒thread
- 多執行緒併發安全問題詳解執行緒
- 關於js執行緒問題的解讀JS執行緒
- Spring中多執行緒的使用及問題Spring執行緒
- 多執行緒中自定義執行緒池與shiro導致的許可權錯亂問題解決執行緒
- 多執行緒併發執行及解決方法執行緒
- 執行緒模組執行緒
- 多執行緒相關問題執行緒
- ArrayList 的執行緒安全問題執行緒
- JUC之多執行緒鎖問題執行緒
- 深入JAVA執行緒安全問題Java執行緒
- 解決POI多執行緒匯出時資料錯亂問題執行緒
- 使用Loom建立虛擬執行緒 - davidOOM執行緒
- Java執行緒的排程Java執行緒
- 多執行緒,你覺得你安全了?(執行緒安全問題)執行緒
- 解決jenkins執行磁碟滿的問題Jenkins
- 執行 shell 指令碼 \r 問題解決指令碼
- WebMagic多執行緒導致註解失效問題Web執行緒