BUAA OO Unit-2个人总结 22230612-杭洋

杭洋-22230612 学生 2024-04-20 12:46:35

三次作业中同步块的设置和锁的选择

在本单元的三次作业当中,我设置了两种的锁,

  • 修改电梯自身时需要给电梯的外部加锁。

  • 当得到重置指令的时候给重置部分加锁。

  • 双轿厢电梯的楼层锁。

架构图和复杂度分析

img

img

img

img

三次作业稳定和易变的内容

稳定内容

电梯的基本运行逻辑,如开关门上下客等,以及电梯的调度算法。

易变内容

电梯种类和新的运行逻辑,如重置电梯、新种类电梯等。

如何实现双轿厢的两个轿厢不碰撞的

使用一把可重入锁,当其中一个轿厢正在换乘楼层时,另一个轿厢如果也需要进入换乘楼层,则让该轿厢在换乘楼层外等待。同时保证某轿厢在换乘楼层操作结束之后,下一时刻必须离开换乘楼层。

程序出现过的bug以及多线程程序的debug方法

  • 由于调度器设计的比较简单,出现过的bug主要是电梯状态之间的转换问题。有时候电梯会根据当前状态继续移动从而移动到不合法的楼层,从而出现访问的问题。

  • debug方式:通过编写自动化脚本并在代码当中安排关键位置信息的输入输出,从而观察代码的执行情况。由于多线程不能像之前的程序那样逐行执行,所以插入断点进行编程变得困难,因此使用了这一种比较原始的方式进行debug。

线程安全和层次化设计

线程安全

  • 锁的设计
    • 只在锁所控制的相关数据被改变的时候notify相关线程,并只给由不同线程共享的数据块加锁。
    • 梳理代码逻辑,保证所有的死循环当中,所有的分支一定存在wait或者sleep,从而避免轮询。
    • 线程的退出首先梳理好退出条件的机制,保证逻辑上不存在环路,从而避免线程无法关闭。

      层次化设计

  • 调度器层面
    • 输入-等待队列-调度器
  • 电梯层面
    • 普通单轿厢电梯
    • 双轿厢电梯等待队列-有楼层锁的单轿厢电梯
...全文
38 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码直接下载地址: https://pan.quark.cn/s/d280357b18e5 在网页构建领域中,HTML5被视为当代网页工程的基础规范,其问世显著增强了页面的视觉表现力与用户互动性。本工程致力于运用HTML5技术开发一个电视剧信息展示页面,目的是呈现诸如剧名、演员构成、故事梗概等电视剧关键资料。接下来将深入阐释如何借助HTML5的结构化组件和样式管理功能达成此项目目标。 我们必须掌握HTML5的核心框架。一个规范的HTML5文档一般包含``声明、``根标记、``头部标记和``主体标记。在头部区域,可以配置网页的基本元数据,例如字符集设定、页面标题等。在主体部分,将具体构建电视剧信息列表的内容。 电视剧展示页面通常包含多个条目,每个条目对应一部电视剧。HTML5中的`
`标记用于内容模块化,适合表示单个电视剧的详细信息区域。每个`
`内部,可使用`

`标题标记显示剧名,``图像标记插入宣传剧照,`

`段落标记呈现剧情介绍,而`

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧