某机场的机票候补系统规定,旅客到机场可以候补机票,若机票有空额则直接出票,若无票额时,候补机票的旅客按先到先得的方法进入候补队列,等待退票旅客退票。一旦有旅客退票,那么将唤醒第一个候补旅客,若没有等待的旅客则将空余票额加一,请用P、V操作实现上述过程。

admin2016-12-23  25

问题 某机场的机票候补系统规定,旅客到机场可以候补机票,若机票有空额则直接出票,若无票额时,候补机票的旅客按先到先得的方法进入候补队列,等待退票旅客退票。一旦有旅客退票,那么将唤醒第一个候补旅客,若没有等待的旅客则将空余票额加一,请用P、V操作实现上述过程。

选项

答案TyPedef int semaPhore;//定义信号量 SemaPhore mutex=1;//临界区互斥信号量,用于互斥 SemaPhore tickets=N;//空余票额的资源信号量,用于同步 Void standby_Passenger(Pi) {while(1) {P(tickets);//获取空票额数据,若无票则阻塞 P(mutex);//为保证互斥访问数据库 Sell-tickets(Pi);//出售 V(mutex);//释放信号量 } Void refund-tickets(Pj) {while(1) {P(mutex);//为保证互斥访问数据库获取空票额数据,若无票则阻塞 refund_lickets(Pj);//完成退票 V(mutex);//释放互斥量 V(tickets);//票额加一,若有阻塞进程则唤醒 }

解析
转载请注明原文地址:https://kaotiyun.com/show/8Ajx777K
0

最新回复(0)