从第4次作业开始,就进入了多线程编程的环节。我个人对于多线程的理解就是在一个程序在执行时有多个执行流,能够实现多个线程并发执行的技术。由于能在同一时间内执行多个线程,因而能够提升计算机的整体处理性能。
第五次作业分析:
由于第五次作业是我第一次接触到多线程编程,因此这次作业对于我来说难度还是相当大的。此次作业主要出现的问题是会出现时间上的误差,指导书上说明了误差在100ms以内是合理的。但是我的作业在有空闲电梯的时候会出现时间误差超过100ms的情况。
在bug的方面,公测点中有一个点未通过。在我的程序中,当两台电梯同时运行,并且运行到同一楼层时,会出现时间的错乱。究其原因在于对时间的访问时,第二台电梯的运行时间加上了本来该属于另一台电梯的请求的输入时间,因而导致出错。
第六次作业分析:
第六次作业在控制台读取监控路径完成后,启动 Snapshot 线程,然后启动 snapshot 中的 四个触发器线程。每隔一定的时间段,Snapshot 就会更新然后唤醒各个触发器 执行相应的操作。
第七次作业分析:
第7次作业主要出现的问题在于寻找最短路径中如何将所有的经过的点输出出来,这导致了我花费了很长的时间。在测试的时候,遇到的主要问题是由于出租车的位置是随机的,难以确认出租车在去往目的地的过程中,经过的路径是否是最短的路径,这给测试者带来了一定麻烦。
心得体会:
对于一般性的bug测试来说,主要是针对指导书上的细节部分,检查被测者的细节完成度如何。比如输入是否完整。本人在第7次作业中,出租车运行的过程中的输出遗漏了某些信息而被报了imcomplete。其次,在这个基础上,可以从在合理测试的范围内进行极限状况的测试。
对于线程安全性的bug测试来说,线程安全问题主要是由于数据竞争引起的。比如在第6次作业中,读写操作同时发生。因此我们可以找到测试的代码中同步的地方,分析竞争数据的代码段的逻辑,相应地构造测试数据。
总体来看,这三次作业是对多线程编程应用的逐步加深,而且代码重用的部分也在不断增加。因此之后我们应该尽可能地写出可移植性强的代码,这样才能减小之后的工作量。
6系的主要矛盾一直是日益增长的OO需求和同学越来越紧的时间之间的矛盾。在昆仑课程的影响下,还是要克服拖延症和懒惰的性格,望大家共勉。