Double-ATM-Simulator

介绍

本项目是一个基于 Unity 的模拟器,通过两个独立 ATM 界面同时操作同一共享银行账户,直观展示并发访问下的数据一致性问题。该项目是为 DI22004 - Computer Systems 2B(计算机系统 2B)的一个作业而开发的。

核心并发控制采用简单的互斥机制:当一台 ATM 开始交易(取款/转账)时,另一台 ATM 若登录同一账户,则显示“账户已被占用”页面,并阻止后续操作,直至前一交易完成或登出。

主要技术组件包括:AtmDataManager(中心化的账户状态持有者,类似单例)、各页面脚本(LoginPageMainPageWithdrawPageTransferPageRecordPageOccupiedPage)以及 AtmTerminal(协调双 ATM 逻辑并触发占用检查)。交易代码路径中故意保留人工短延迟,以便更容易观察到竞争窗口。

项目强调 UI 驱动的同步而非底层线程原语(未描述显式 Monitor/Lock/Semaphore 使用),适合演示并发概念。

本项目采用 Unity 及 C# 实现,包含按键音效、数字键盘按压光效、交易动画流程,以及预设测试账号等。

访问

本项目已在 GitHub 上开源。

🔗 Double-ATM-Simulator on GitHub

发现问题、bug,或希望提出建议?

请您在本 GitHub 项目的 “Issues” 区内提出:

  1. 点击 “New issue”。
  2. 按要求撰写标题(title)和描述(description)。
  3. 点击 “Create”。您也可以在 Windows 电脑上按下 Ctrl + Enter 或在 Mac 上按下 ⌘ ⏎。