荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: huhaiming (一生只爱她), 信区: CIE
标 题: 2000计算机B班说的理发师问题
发信站: 荔园晨风BBS站 (Thu Mar 20 10:37:33 2003), 站内信件
下载在我的ftp里面
共享帐号->操作系统->理发师问题.doc
理发师问题 2003-3-20
#define CHAIRS 5 //凳子数
struct semaphore{
int value;
struct PCB *waiting_queue
};
semaphore customers = 0; //等候服务的顾客数
semaphore barbers = 0; //等候服务的理发师数
semaphore mutex = 1; //互斥信号量
int waiting = 0; //等候的顾客(还未理发的)
void barber(void)
{
while(TRUE)
{
P(customers); //如果顾客数是0,则睡觉
P(mutex); //要求进程等候
waiting --; //等候顾客数减一
V(barbers); //一个理发师开始理发
V(mutex); //释放等候
cut-hair(); //理发(非临界区操作)
}
}
void customer(void)
{
P(mutex); //进入临街区
if(waiting < CHAIRS) //如果没有空的椅子就离开
{
waiting ++; //等候顾客数加一
V(customers); //如果必要的话,唤醒理发师
V(mutex); //释放访问等候
P(barbers); //如果barber为0,就睡觉
get-haircut(); //坐下等候服务
}
else
{
V(mutex); //店里人满了,走吧
}
}
--
菩提本无树,明镜亦非台
本来无一物,何处惹尘埃
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.200]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店