CS3502/project1
2025-10-28 22:15:17 -04:00
..
phase1 add: project 2 2025-10-28 22:15:17 -04:00
phase2 feat: project 1 2025-10-09 22:18:56 -04:00
phase3 feat: project 1 2025-10-09 22:18:56 -04:00
phase4 feat: project 1 2025-10-09 22:18:56 -04:00
report feat: project 1 2025-10-09 22:18:56 -04:00
default.nix feat: project 1 2025-10-09 22:18:56 -04:00
README.md docs: fix gcc command in README 2025-10-09 23:40:57 -04:00
test.nix feat: project 1 2025-10-09 22:18:56 -04:00

CS3502 Project 1: Asynchronous Banking Account Management

This directory contains multiple toy models of asynchronous bank account systems, demonstrating the principles of race condition and deadlock avoidance.

Usage

There are 4 programs labeled Phases 1-4:

  • Phase 1: Naive non-supervised multi-threaded account system
  • Phase 2: Mutex-based account system
  • Phase 3: Deadlock generation
  • Phase 4: Deadlock resolution via lock ordering

If you have Nix installed:

nix run .#p1-phase1

Otherwise, the code must be compiled manually:

gcc phase1/phase1.c -o phase1.bin