【正确答案】
【答案解析】读者有任意多个,但进入阅览室读最多为100人,为此可设一个信号量s,代表空座位的数目;另登记表为临界资源,需设一个用于互斥的信号量mutex,防止2个及2个以上的读者进程同时对此表访问。每个读者的动作包括进入、阅读、离开。
struct semaphore:s,mutex=100,1;
cobegin
void readeri(void)(i=1,2,...,k) {
while(TRUE) {
P(s);
P(mutex);
查登记表,置某座位为占用;
V(mutex);
...
reading;
...
P(mutex);
查登记表,置某座位为空;
V(mutex);
V(s);
}
}
coend