Simple Deadlock Examples
Maybe a simple bank situation. class Account { double balance; void withdraw(double amount){ balance -= amount; } void deposit(double amount){ balance += amount; } void transfer(Account from, Account to, double amount){ sync(from); sync(to); from.withdraw(amount); to.deposit(amount); release(to); release(from); } } Obviously, should there be two threads which attempt to run transfer(a, b) and transfer(b, a) at … Read more