Types of solutions
- Number of processes (forking on Unix or spawning) (called multiprocessing in Python)
- Number of threads (Single threaded vs Multi-threaded)
- Asynchronous, non-blocking or synchronous vs blocking (aka "normal") Cooperative Multitasking