阜阳师范学院计算机与信息学院 1 2020 6 27 例一 爱睡觉的理发师问题问题 理发师只在理发椅前 要么理发 要么睡觉 理发师睡觉时 第一个顾客唤醒理发师 理发师在理发时 其余顾客在n张椅子前等待 椅子不够时 顾客离开 作业补充 同步 没有顾客时 理发师不能理发 只能睡 customer 0 理发师睡觉的时候顾客不能理发 需要先唤醒 barber 1 互斥 设置变量wait count 0 来记录当前等待的顾客数 理发师和顾客以及顾客之间对其互斥访问 mutex 1 阜阳师范学院计算机与信息学院 2 2020 6 27 例二 银行排队问题问题 银行有n个柜员 每个顾客进入银行后先取一个号 并且等着叫号 当一个柜员空闲后 就叫下一个号 作业补充 分析 将顾客号码排成一个队列 顾客进入银行领取号码后 将号码由队尾插入 柜员空闲时 从队首取得顾客号码 并且为这个顾客服务 由于队列为若干进程共享 所以需要互斥 柜员空闲时 若有顾客 就叫下一个顾客为之服务 因此 需要设置一个信号量来记录等待服务的顾客数