view asyncio_threads/bank_question/README.md @ 278:8d560f50ed4c

Improve infinite canvas interactions and browser chrome Render Lucide icons directly with Raylib, add searchable icon browsing, robust text editing, entity lifecycle animations, z-order-safe input, semantic themes, and animated editable browser controls. Document rendering, pinning, context, and component extension for future agents. Co-authored-by: Copilot <[email protected]> Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:16:14 -0700
parents 46daba6e3cf4
children
line wrap: on
line source

# Bank Account

You are given a simplified multi-threaded “bank account” implementation used by one of our infrastructure teams. The current code processes deposits concurrently but produces incorrect results.

```
class BankAccount:
    def __init__(self, balance):
        self.balance = balance

    def deposit(self, amount):
        new_balance = self.balance + amount  # read
        time.sleep(0.1)                      # simulate delay
        self.balance = new_balance           # write

account = BankAccount(0)

with ThreadPoolExecutor(max_workers=2) as executor:
    futures = [
        executor.submit(account.deposit, 500),
        executor.submit(account.deposit, 700),
    ]
```

Task

Identify the concurrency bugs in the implementation.

Explain why these bugs occur.

Fix the implementation without modifying the existing BankAccount class directly.

You may use subclassing (Python) or embedding (Go-style composition), depending on the language you choose.

Ensure your solution is thread-safe and produces the correct final balance (1200).