CS3502/project1
2025-10-09 22:18:56 -04:00
..
phase1 feat: project 1 2025-10-09 22:18:56 -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 feat: project 1 2025-10-09 22:18:56 -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 -c phase1/phase1.c -o phase1.bin