PV操作 阅览室登记问题
生活随笔
收集整理的這篇文章主要介紹了
PV操作 阅览室登记问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
例題: 有一閱覽室,讀者進入時必須先在一張登記表上登記。該表中每個單元格代表閱覽室中的一個座位。讀者離開時要注銷掉其登記信息。閱覽室共有 50 個座位。登記表每次僅允許一位讀者進行登記或注銷。某一讀者登記時,若發現登記表滿,則他需在閱覽室外等待,直至有空位再登記進入。試用 類Pascal語言 和 P、V 操作,描述讀者行為。【國防科技大學2000】(注:【南昌大學2002】類似)
//答案: /* 基于 C 語言寫的偽代碼 */semaphore seats = 50; // 用信號量 seats 表示可用的座位數, 初值為 50; semaphore mutex = 1; // 信號量 mutex 表示登記表是否正在使用, 初值為 1. while(1){"讀者進程Si()" // i = 1, 2, 3,...,nwhile(1){P(seats);P(mutex);//讀者登記V(mutex);//讀者閱讀P(mutex);//讀者注銷V(mutex);V(seats);//讀者離開} }解題思路: 因為只有有人進閱覽室,才能有人出,所以這里把讀者登記和注銷當一個進程,用信號量mutex來互斥讀者之間登記和注銷;
總結
以上是生活随笔為你收集整理的PV操作 阅览室登记问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库1024错误暂时性的解决办法
- 下一篇: XS GPU系统产品亮相:专注汽车行业的