問題描述:假定閱覽室最多可同時容納100個人閱讀,讀者進入時,必須在閱覽室門口的一個登記表上登記,內容包括姓名、座號等,離開時要撤掉登記內容。用P、V操作描述讀者進程的同步算法。
原理及代碼解讀見我的另一篇文章:操作系統 # 從零開始的信號量機制理論與實踐
https://blog.csdn.net/qq_33583069/article/details/105877936 link~
僞代碼實現
var mutex,res:semaphore;
mutex:=1; res:=100;
Procedure reader(readerID);
{
P(res);
P(mutex);
registrationInformation(readerID);
V(mutex);
reading();
P(mutex);
cancelRecord(readerID);
V(mutex);
V(res);
}
C/C++實現
#include<stdio.h&g