The Little Book of Semaphores 訊號量小書 第六章 不那麼經典的問題 6.3 狒狒穿越問題
第六章 不那麼經典的問題
6.3 狒狒穿越問題
這個問題改編自Tanenbaum的作業系統:設計和實現[12]。 南非克魯格國家公園(Kruger National Park)的某處有一個深峽谷,還有一條橫跨峽谷的繩索。 狒狒可以在繩子上手挽手地擺動著穿過峽谷,但如果兩個朝相反方向走的狒狒在中間相遇,他們將會戰鬥並摔死。 此外,繩索僅足以容納5只狒狒。 如果繩子上同時有更多的狒狒,它就會斷開。
假設我們可以教狒狒使用訊號量,我們想設計一個具有以下屬性的同步方案:
•一旦狒狒開始越過,它就會保證到另一邊而不會碰到另一邊的狒狒。 •繩索上永遠不會有超過5只狒狒。 •持續不斷的狒狒從一個方向穿過不應該無限期地阻止狒狒向另一個方向走(不要有飢餓問題)。
我不會包括這個問題的解決方案,因為答案應該很清楚。
相關推薦
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 訊號量小書 第五章 稍欠經典的同步問題 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 訊號量小書 第七章 不太遙遠的經典問題 7.6 餐廳問題
第七章 不太遙遠的經典問題 7.6 餐廳問題(Dining Hall problem) 這個問題是由Jon Pollack在Olin College的同步課程中編寫的。 學生們在餐廳裡用餐(dine),然後離開(leave)。 在呼叫dine之後,呼叫leave之前
The Little Book of Semaphores 訊號量小書 第四章 經典同步問題 4.5 吸菸者問題
第四章 經典同步問題 4.5 吸菸者問題 吸菸者問題問題最初由Suhas Patil [8]提出,他聲稱用訊號量無法解決。 這種說法帶有一定的條件,但無論如何,問題是有趣且具有挑戰性的。 涉及四個執行緒:代理人和三個吸菸者。 吸菸者永遠地迴圈,首先等待配料,然後製作
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 訊號量小書 第一章 簡介
第一章 簡介 1.1 同步 通常,“同步”意味著兩件事情同時發生。在計算機系統中,同步更為通用;它指的是事件之間的關係 - 甚至是任何數量的事件,以及任何型別的關係(之前,期間,之後)。 計算機程式設計師經常關注同步約束,這是與事件順序有關的要求。例子包括: 順序
The Little Book of Semaphores 訊號量小書 第二章 訊號量
第二章 訊號量 在現實生活中,訊號量是用於視覺通訊的訊號系統,通常具有標誌,燈或一些其他機制。 在軟體中,訊號量是一種資料結構,可用於解決各種同步問題。 訊號量是由著名的“古怪”的電腦科學家Edsger Dijkstra發明的。 自最初的設計以來,一些細節已經改變,但基本
SHELL環境變量初識(第六章)
command include 工作環境 linux 程序 1. 環境變量的概念 環境變量是用來存儲shell會話和工作環境,方便shell輕松訪問到設定值中的程序,環境變量分為全局變量和局部變量2. 全局變量 全局變量在shell和它的子shell中都生效,可以通過env和printen
Spark:The Definitive Book第六章筆記
after 結構 schema options finally serialize supported ant imp Where to Look for APIs DataFrame本質上是類型為Row的DataSet,需要多看https://spark.apache.o
uC/OS II 函式說明之與訊號量操作相關的六個函式
if (OSIntNesting > 0) { /* ISR中,不允許此操作 */ *err = OS_ERR_PEND_ISR;
《Linux命令行與shell腳本編程大全》 第六章環境變量
表示 com export 命令行 命令行參數 logs 登錄系統 就是 如何 很多程序和腳本都通過環境變量來獲取系統信息、存儲臨時數據和配置信息。 6.1 什麽是環境變量: bash shell用一個叫環境變量(environment variable)的特性來存儲有
CISCO網絡基礎小實驗第六節
網絡 IT 基礎 本文講述生成樹的基本原理作用算法及配置,CISCO網絡基礎小實驗第六節
小甲魚 第六天 p66- python
100萬 函數 ports 遞歸 def color on() rec style 1.遞歸. #在函數內部調用本身。 >>>def recursion() recursion() --end #應用於網絡爬蟲 自設遞歸深度: >&g
小白的刷題之路1--紫書第三章習題UVA-455,UVA-227,UVA-232,UVA-1368,UVA-202,UVA-10340,UVA-1587,UVA-1588,UVA-11809
寫在前面 第一次寫博文,求大佬輕拍。。。我是真的小白,雖然是大四生,但幾乎算是非科班出身了,前三年讀的是北京一所211的機械,就學了個C。。。大三下準備保研,思前想後感覺對機械興趣真的不大,就想著轉cs,勉強保到一所中下985,趁著大四還算閒,就想著刷刷題希望漲漲水平。。。
the flask mega tutorial自學記錄 之 第六章 Profile Page(編輯頁)
在導航欄增加扉頁選項 <div> Microblog: <a href="{{ url_for('index') }}">Home</a> {% if current_user.
計算機作業系統第四版湯小丹 第三章作業
第三章習題 一、問答題 1. 高階排程與低階排程的主要任務是什麼? 為什麼要引入中級排程? (1)高階排程又稱為作業排程。它是批處理系統中使用的一種排程。其主要任務是按照某種演算法從外存的後備佇列上選擇一個或多個作業調入記憶體,併為其建立程序、分配必要的資源,然後再將所