设有一个售票大厅可容纳200人购票,如果厅内不足200人则允许进入,超过则在厅外等候;售票员某时只能给一个购票者服务,购票者买完票后就离开。
1 分析:既有互斥也有同步
互斥:大厅容纳200人,相当于缓冲池,临界资源
同步:到达大厅容量200人后,其它人不可进入(不能生产);大厅没人时,无人购票离开(消费)
2 基本思想:利用生产者与消费者模型完成
3 形式化描述:
Semaphore empty=200, mutex=1, full=0;
等待者:
While(1)
{
大厅外等待;
P(empty);
p(mutex);
进入大厅;
V(mutex);
V(full);
}
购票者:
While(1)
{
P(full);
p(mutex);
离开大厅;
V(mutex);
V(empty);
使用数据;
}