问答题

【同步问题应用编程题-①】
畅想两岸统一后,北京开通了每日一趟直达台北的高铁(满员载客1200人),铁路部门关于京台方向高铁的售票规定如下:(1)发售北京到台北(BT)、北京到福州(BF)以及福州到台北(FT)三种车票;(2)实行优先满足北京出发上座率同时兼顾福州到台北旅行需求的订票原则,也即采取高铁从北京出发前仅预售北京到台北(BT)、北京到福州(BF)两种车票,高铁从北京出发时再发售福州到台北(FT)的车票(包括北京到福州下车旅客空出来的所有空座)。为此,分析设计编写类C语言伪代码如下,请补充完整。提示:基于三类进程BTPassenger、BFPassenger、FTPassenger来模拟(计划)乘坐特定日程特定京台高铁车次的上述三种(行程)旅客的购票及乘车旅行过程(包括订票、上车、乘车旅行、【到达目的地】下车四个环节,且假设BTPassenger、BFPassenger两类进程在高铁从北京出发时若未“订到票”则被系统自动撤销【即同时意味着所申请信号量的自动恢复操作,换句话说,如已执行了某信号量X的wait操作,则这时会自动执行signal(X)】;而FTPassenger进程在高铁从北京出发后才被创建);采用记录型信号量实现上述三类进程关于订票环节的同步关系。
semaphore tickets = (    ①    );
semaphore mutex =  1; 
void BTPassenger(void)
{
 (    ②    )
 (    ③    )
 订票
 (    ④    )
 上车
 乘车旅行
 【到达台北】下车
 (    ⑤    )
}
void BFPassenger(void)
{
 (    ⑥    )
 (    ⑦    )
 订票
 (    ⑧    )
 上车
 (    ⑨    )
 乘车旅行
 【到达福州】下车
}
void FTPassenger(void)
{
 (    ⑩A    )
 (    ⑩B    )
 订票
 (    ⑩C    )
 上车
 乘车旅行
 【到达台北】下车
 (    ⑩D    )
}
①处应填入(      )

答案:1200