电梯作业
第一次作业和第二次作业
由于我第一次作业给傻瓜电梯写了捎带所以第一次第二次作业差不多
电梯运行一个线程Elevator,输入控制一个线程Call
一个物理电梯控制表可以完成移动和进出人功能,一个电梯请求表用来调度和存储请求
电梯运行利用状态机OPEN,CLOSE,WAIT,UP,DOWN,STOP,GO,每个楼层电梯都会STOP判断需要开门如果开门
就出人进入然后关门,如果不需要开门,进入GO状态继续移动,
状态机比较时刻控制电梯运行以及封装函数,
电梯运行的算法基于贪心,如果电梯为空电梯去接离得最近的,如果电梯有人要先满足电梯里面人的需求顺便捎带
总结整理和反思
代码复用性较差,由于贪心的存在可能存在先到来的要求不能被优先满足。
第三次作业
第三次作业继承了第二次作业的构造,对于物理电梯进行改造,由于第二次代码复用行较差对contorl进行大量的重新写
control加入了楼层数组floor(),对电梯人数设置了限制,对于调度策略,
电梯可以接两种人,一种是他出发楼层和结束楼层都在floor里面,出发楼层不是1或者15但是floor里面有但是结束楼层没有对于这种人我会把他放到最近的1或者15层(换乘楼层)
总结整理和反思
刚开始写没有考虑电梯系统终止的条件,因为我们存在上上下下的情况
由于设计不存在总调度器所以会产生多个电梯去强一个请求的情况导致cpu超时,