The Little Book of Semaphores 訊號量小書 第五章 稍欠經典的同步問題 5.3 先進先出理髮店
第五章 稍欠經典的同步問題
5.3 先進先出理髮店
在上一個解決方案中,無法保證顧客按照他們到達的順序獲得服務。 最多有n個顧客可以通過旋轉柵門,發出customer訊號,並等待barber訊號。 當理髮師發出barber訊號時。任何顧客都可能繼續。
修改此解決方案,以便按照他們通過旋轉柵門的順序提供服務。
提示:您可以將當前執行緒稱為self,因此如果您編寫self.sem = Semaphore(0),則每個執行緒都會獲得自己的訊號量。
5.3.1 先進先出理髮店提示
我的解決方案使用了名為queue的訊號量列表。
當每個執行緒通過旋轉門時,它會建立一個執行緒並將其放入佇列中。
每個執行緒都在等待自己的訊號量,而不是等待barber。 當理髮師醒來時,他從佇列queue中移除一個執行緒併發出訊號。
5.3.1 先進先出理髮店方案
以下是修改後的顧客程式碼:
理髮師的程式碼:
請注意,理髮師必須獲取互斥鎖才能訪問佇列。 此解決方案位於sync_code / barber2.py中(參見3.2)。
相關推薦
The Little Book of Semaphores 訊號量小書 第五章 稍欠經典的同步問題 5.1 野蠻人進餐問題
第五章 稍欠經典的同步問題 5.1 野蠻人進餐問題 這個問題來自安德魯斯的併發程式設計[1]。 一個野蠻人部落從一個大鍋裡吃公共晚餐,大鍋可以容納大量的燉傳教士。【這個問題是基於對狩獵 - 採集社會中西方傳教士歷史的卡通化表現。 一些幽默的意圖是針對哲學家進餐的
The Little Book of Semaphores 訊號量小書 第五章 稍欠經典的同步問題 5.3 先進先出理髮店
第五章 稍欠經典的同步問題 5.3 先進先出理髮店 在上一個解決方案中,無法保證顧客按照他們到達的順序獲得服務。 最多有n個顧客可以通過旋轉柵門,發出customer訊號,並等待barber訊號。 當理髮師發出barber訊號時。任何顧客都可能繼續。 修改此解決方案
The Little Book of Semaphores 訊號量小書 第五章 稍欠經典的同步問題 5.7 過河問題
第五章 稍欠經典的同步問題 5.7 過河問題 這個問題來自於加州大學伯克利分校的安東尼·約瑟夫寫的問題集,但我不知道他是不是原作者。 它類似於H2O問題,因為它是一種特殊的屏障,只允許執行緒以某種組合通過。 在華盛頓州雷德蒙德附近,有一艘划艇,Linux黑客和微軟
The Little Book of Semaphores 訊號量小書 第六章 不那麼經典的問題 6.1 搜尋-插入-刪除問題
第六章 不那麼經典的問題 6.1 搜尋-插入-刪除問題 這個是來自安德魯斯的併發程式設計[1]。 三種執行緒共享對單鏈表的訪問:搜尋者,插入者和刪除者。 搜尋者只檢查列表; 因此它們可以彼此同時執行。 插入者將新項新增到列表的末尾; 插入必須是互斥的,以防止兩個插入
The Little Book of Semaphores 訊號量小書 第六章 不那麼經典的問題 6.3 狒狒穿越問題
第六章 不那麼經典的問題 6.3 狒狒穿越問題 這個問題改編自Tanenbaum的作業系統:設計和實現[12]。 南非克魯格國家公園(Kruger National Park)的某處有一個深峽谷,還有一條橫跨峽谷的繩索。 狒狒可以在繩子上手挽手地擺動著穿過峽谷,但如果
The Little Book of Semaphores 訊號量小書 第八章 Python中的同步
第八章 Python中的同步 通過使用虛擬碼,我們避免了現實世界中一些醜陋的同步細節。 在本章中,我們將介紹Python中的實際同步程式碼; 在下一章我們將看看C. Python提供了一個相當令人愉快的多執行緒環境,並配有Semaphore物件。 它有一些缺點,但附錄
The Little Book of Semaphores 訊號量小書 第九章 C中的同步
第九章 C中的同步 在本節中,我們將在C中編寫一個多執行緒的同步程式。附錄B提供了一些實用程式程式碼,用於使C程式碼更加可口。 本節中的示例依賴於該程式碼。 9.1 互斥 我們首先定義一個包含共享變數的結構體: counter是一個共享變數,它將由併發執行
The Little Book of Semaphores 訊號量小書 第四章 經典同步問題 4.5 吸菸者問題
第四章 經典同步問題 4.5 吸菸者問題 吸菸者問題問題最初由Suhas Patil [8]提出,他聲稱用訊號量無法解決。 這種說法帶有一定的條件,但無論如何,問題是有趣且具有挑戰性的。 涉及四個執行緒:代理人和三個吸菸者。 吸菸者永遠地迴圈,首先等待配料,然後製作
The Little Book of Semaphores 訊號量小書 第七章 不太遙遠的經典問題 7.6 餐廳問題
第七章 不太遙遠的經典問題 7.6 餐廳問題(Dining Hall problem) 這個問題是由Jon Pollack在Olin College的同步課程中編寫的。 學生們在餐廳裡用餐(dine),然後離開(leave)。 在呼叫dine之後,呼叫leave之前
The Little Book of Semaphores 訊號量小書 第一章 簡介
第一章 簡介 1.1 同步 通常,“同步”意味著兩件事情同時發生。在計算機系統中,同步更為通用;它指的是事件之間的關係 - 甚至是任何數量的事件,以及任何型別的關係(之前,期間,之後)。 計算機程式設計師經常關注同步約束,這是與事件順序有關的要求。例子包括: 順序
The Little Book of Semaphores 訊號量小書 第二章 訊號量
第二章 訊號量 在現實生活中,訊號量是用於視覺通訊的訊號系統,通常具有標誌,燈或一些其他機制。 在軟體中,訊號量是一種資料結構,可用於解決各種同步問題。 訊號量是由著名的“古怪”的電腦科學家Edsger Dijkstra發明的。 自最初的設計以來,一些細節已經改變,但基本
Stacks of Flapjacks 翻煎餅-UVA120 白書第五章
Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, ope
The Little Redis Book中文版 第五章
在最後一章裡,我們將集中談論Redis執行中的一些管理方面內容。這是一個不完整的Redis管理指南,我們將會回答一些基本的問題,初接觸Redis的新使用者可能會很感興趣。 配置(Configuration) 當你第一次執行Redis的伺服器,它會向你顯示一個警告,指redi
利用記錄型訊號量機制: wait(s), signal(s)解決程序同步問題
wait(s) 等價與P操作, signal(s)等價於V操作 生產者-消費者問題 int in = 0, out = 0; item buffer[n]; semaphore mutex = 1, empty = n, full = 0; void
Spark:The Definitive Book第五章筆記
park 可選 o-c 字節數組 ont -- local convert allow DataFrame由record序列組成,record的類型是Row類型。 columns代表者計算表達式可以在獨立的record上運行。 Schema定義了各列的名稱和數據類型。 分區
SHELL環境變量初識(第六章)
command include 工作環境 linux 程序 1. 環境變量的概念 環境變量是用來存儲shell會話和工作環境,方便shell輕松訪問到設定值中的程序,環境變量分為全局變量和局部變量2. 全局變量 全局變量在shell和它的子shell中都生效,可以通過env和printen
CISCO網絡基礎小實驗第五節
網絡 IT 基礎 第五章利用三層交換機實現VLAN間路由 通過三層交換機實現不同VLAN間的通信! CISCO網絡基礎小實驗第五節
小甲魚 第五天 p44-64 python
函數變量 反轉 打包 count 換行 數據 列數 子函數 表示 1.%左右均位數字>求余 %出現在字符中時,表示格式化操作符 2.python轉義字符及含義: \‘單引號 \r回車符 \‘‘雙引號 \f換頁符 \a發出系統響鈴聲 \o八進制數代表的字符
小白的刷題之路1--紫書第三章習題UVA-455,UVA-227,UVA-232,UVA-1368,UVA-202,UVA-10340,UVA-1587,UVA-1588,UVA-11809
寫在前面 第一次寫博文,求大佬輕拍。。。我是真的小白,雖然是大四生,但幾乎算是非科班出身了,前三年讀的是北京一所211的機械,就學了個C。。。大三下準備保研,思前想後感覺對機械興趣真的不大,就想著轉cs,勉強保到一所中下985,趁著大四還算閒,就想著刷刷題希望漲漲水平。。。
計算機作業系統第四版湯小丹 第三章作業
第三章習題 一、問答題 1. 高階排程與低階排程的主要任務是什麼? 為什麼要引入中級排程? (1)高階排程又稱為作業排程。它是批處理系統中使用的一種排程。其主要任務是按照某種演算法從外存的後備佇列上選擇一個或多個作業調入記憶體,併為其建立程序、分配必要的資源,然後再將所