面向对象编程第二阶段总结

       终于熬过了oo的第二个阶段,虽然完成的质量只能说是差强人意,不过好歹没有无效,也算是勉强达成目标了QVQ

 

第五次作业——多线程电梯

一、程序分析

 

 

二、个人反思

       首先是第五次作业多线程电梯,这是我这三次作业中最糟糕的一次,第一次接触多线程真的非常懵逼。。。而且因为之前的电梯作业打下的基础不太好,导致这次多线程作业完成起来更加费力,到最后越改越乱越改越崩。最后的结果是公测错了3个,互测被挂了11个bug,的确我这次的代码写得比较糟糕,在很多情况下都会出现各种莫名其妙的混乱,测试者把我所有正常功能分支都报bug了orz

       线程设计:Main线程在启动各个线程后销毁,Simulatoar线程处理用于处理输入的请求,Dispacher线程不断扫描请求队列并将请求送到各个电梯的处理队列中,三个newElevator线程各自处理自己被分配到的的请求队列。

 

第六次作业——ifttt

一、程序分析

 

 

二、个人反思

       第六次作业ifttt的指导书理解起来比较困难,但慢慢把整个逻辑思路想清楚了之后,写起来感觉比多线程电梯好很多,可能也有一部分对于多线程熟悉了的缘故,最后公测错了一个,是因为在目录深度过大时读取文件出现了crash,互测只错了一个,原因是编码错误问题,输出出现了一些乱码。

       线程设计:Main线程处理请求输入,对于每个有效请求建立一个Trigger线程进行相应监控操作,Summary和Detail线程每过1秒将记录的内容写入到文件中。

 

第七次作业——出租车调度

一、程序分析

 

 

二、个人反思

       第七次出租车调度也完成得不太好。。。主要是开始的比较晚,最后也没时间再好好改了,匆匆交了一个半成品上去,因为公测都是基础格式检查所以没有错,互测被发现了4个BUG。

  线程设计:Main扫描地图进行相关记录,建立100个出租车线程,对于每个有效请求建立一个新的Dispacher线程进行相关调度处理,在每个Dispacher线程中建立一个新的Responsive线程并让Dispacher线程睡眠3秒,Responsive线程在这3秒钟记录所有可响应的出租车,3秒后Dispacher线程判断将响应请求的出租车,并改变响应出租车的状态,修改该出租车的任务属性。

 

posted @ 2018-05-02 17:27  impact0  阅读(119)  评论(0编辑  收藏  举报