45.(7 分)某博物馆最多可容纳 500 人同时参观,有一个出入口,该出入口一次仅允许一个人 通过。参观者的活动描述如下:
cobegin
参观者进程 i:{
进门;
参观;
出门;
}coend请添加必要的信号量和 P、V(或 wait()、signal( ))操作,以实现上述过程中的互斥 与同步。要求写出完整的过程,说明信号量的含义并赋初值。
应该是真题中最简单的题目了,快准狠迅速解决掉,不可以丢分
互斥关系:一个出入口
同步关系:少于500人时才能进入参观
semaphore mutex=1;//互斥使用出入口
semaphore empty=500;//博物馆中的五百个空位
void visitor()
{
while(true)
{
p(empty)//还有空位的时才能进入博物馆
p(mutex)
进门
v(mutex)
参观
p(mutex)
出门
v(mutex)
v(empty)//出门后释放一个空位
}
}