不能超过20,若超过,则前20人留下,其余到外面排队;2:售票厅中少于20名购票者时,厅外的购票者可立即进入。6.功能设计(数据结构及模块说明)6.1本程序的设计原理比较简单,就是两大部分,一是售票员的行车操作过程,另一个是乘客的进入大厅与出去大厅(以及售票,本程序不讨论售票过程)的过程。现在来说明如何具体实现乘客和售票员售票的相关过程。6.2首先,设置2个私有信号量,分别是乘客和售票员的。其中,乘客的私有信号量设置为spys,其初始值为0;售票员的私有信号量为spy,其初始值为1;以上的初值表示的是乘客和售票员的售票和进出大厅的一个具体初始状态,具体的说也就是售票厅中少于20名购票者时,厅外的购票者可立即进入。人数多余20时,就立即出去多余的人。7.具体流程如下图员工有限,没有多余的员工NNSpy=2Y售票厅人数为20已达最大人数,厅外乘客请耐心等待乘客太多了,只留下前20人。输入出去人数。Y输入进入售票厅人数j,售票厅总人数spys=spys+jN乘客进入售票大厅厅内spys>20下一位,乘客(spys)进入售票厅输出:今天开一个窗口请排队,谢谢!Y输出:sorry!今天售票员不上班Spy=1Nspy>1开始输入上班人数spyY售票窗口:下两位。两位乘客进入售票大厅厅内人数为20,其余乘客请到外面等待,谢谢今天开两个窗口,请排成两队,谢谢!?结束8.主要函数intp1();//定义P操作函数,一个售票员执行的过程intp2();//定义p操作,两个售票员执行该过程intj=0;//人多时,减少的人数intv1();//V操作函数,一个售票窗口时购买者执行的过程intv2();//V操作函数,两个售票窗口时购买者执行的过程voidHello();//输出客套语句voidIntroduce();//本客运站人员介绍ck++;//v操作ck--;//相当于p操作9.运行结果: