# 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](https://nixos.org/) installed: ```sh nix run .#p1-phase1 ``` Otherwise, the code must be compiled manually: ``` sh gcc -c phase1/phase1.c -o phase1.bin ```